C# で上書きせずに CSV ファイルにデータを追加する
この記事では、既存のデータを上書きせずに C# で CSV ファイルにデータを行ごとに追加するという一般的な課題に対処します。 File.WriteAllText()
を使用した元の方法では、データ損失が発生しました。 この改良されたアプローチでは、より効率的で堅牢な技術が使用されています。
File.WriteAllText()
File.WriteAllText()
を使用して各行を直接書き込むと、ファイルが繰り返し上書きされ、最後に書き込まれた行のみが残ります。
解決策: StringBuilder
を使用して効率化する
最も効率的な解決策は、ファイルに書き込む前に、StringBuilder
を使用してメモリ内のすべての行を蓄積することです。これにより、ディスク I/O 操作が最小限に抑えられ、特に多数の行を処理する場合のパフォーマンスが向上します。
改善された機能は次のとおりです:
<code class="language-csharp">var csv = new StringBuilder(); // Iterate through data rows foreach (var rowData in data) { // Format each row (adjust as needed for your data structure) var row = $"{rowData[0]},{rowData[1]}"; csv.AppendLine(row); } File.WriteAllText(filePath, csv.ToString()); </code>
このコード:
StringBuilder
を作成します。rowData
要素を反復処理します。$"..."
) を使用して各行をフォーマットします。 特定のデータ構造に一致するようにこれを調整してください。StringBuilder
を使用して、フォーマットされた行を AppendLine()
に追加します。File.WriteAllText()
を使用して完全な CSV 文字列をファイルに書き込みます。 これによりファイルが上書きされることに注意してください。 追加については、次のセクションを参照してください。代替: File.AppendAllText()
既存の CSV ファイルに行を追加するには、File.AppendAllText()
:
<code class="language-csharp">// ... (same StringBuilder logic as above) ... File.AppendAllText(filePath, csv.ToString());</code>
このメソッドは、既存のデータを保持したまま、csv.ToString()
コンテンツをファイルの末尾に追加します。 これは通常、CSV の増分更新に推奨されます。
さらなる機能強化
try-catch
のような潜在的な例外を処理するために IOException
ブロックを追加します。この強化されたアプローチにより、C# での CSV ファイルの書き込みを管理するためのより効率的かつ信頼性の高い方法が提供されます。必ず行の書式設定を特定のデータ構造に適応させてください。
以上がC#で上書きせずにCSVファイルにデータを行ごとに書き込む方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。