首頁 > 後端開發 > 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. 建立一個 StringBuilder 來保存 CSV 資料。
  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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板