ホームページ > バックエンド開発 > C++ > C#で上書きせずにCSVファイルにデータを行ごとに書き込む方法?

C#で上書きせずにCSVファイルにデータを行ごとに書き込む方法?

DDD
リリース: 2025-01-23 03:07:10
オリジナル
727 人が閲覧しました

How to Write Data Row by Row to a CSV File in C# Without Overwriting?

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>
ログイン後にコピー

このコード:

  1. CSV データを保持する StringBuilder を作成します。
  2. rowData 要素を反復処理します。
  3. 文字列補間 ($"...") を使用して各行をフォーマットします。 特定のデータ構造に一致するようにこれを調整してください。
  4. StringBuilder を使用して、フォーマットされた行を AppendLine() に追加します。
  5. 最後に、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 ブロックを追加します。
  • データ検証: データ検証を実装して、データの整合性を確保し、潜在的な形式の問題に対処します。
  • ヘッダー行: 必要に応じて、ヘッダー行を書き込むロジックを追加します。
  • より堅牢な行フォーマット: 複雑なデータ型またはフィールド内の潜在的なカンマについては、より堅牢な処理のために CSV ライブラリの使用を検討してください。 これらのライブラリは多くの場合、エスケープおよび引用符のメカニズムを提供します。

この強化されたアプローチにより、C# での CSV ファイルの書き込みを管理するためのより効率的かつ信頼性の高い方法が提供されます。必ず行の書式設定を特定のデータ構造に適応させてください。

以上がC#で上書きせずにCSVファイルにデータを行ごとに書き込む方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート