我正在C#中創建一個方法,該方法爲Google Product Feed生成一個文本文件。 Feed中將包含超過30,000條記錄,文本文件的重量約爲7Mb。如何在C#中高效地編寫大型文本文件?
下面是我正在使用的代碼(爲簡潔起見刪除了一些行)。
public static void GenerateTextFile(string filePath) {
var sb = new StringBuilder(1000);
sb.Append("availability").Append("\t");
sb.Append("condition").Append("\t");
sb.Append("description").Append("\t");
// repetitive code hidden for brevity ...
sb.Append(Environment.NewLine);
var items = inventoryRepo.GetItemsForSale();
foreach (var p in items) {
sb.Append("in stock").Append("\t");
sb.Append("used").Append("\t");
sb.Append(p.Description).Append("\t");
// repetitive code hidden for brevity ...
sb.AppendLine();
}
using (StreamWriter outfile = new StreamWriter(filePath)) {
result.Append("Writing text file to disk.").AppendLine();
outfile.Write(sb.ToString());
}
}
我想知道StringBuilder是否是正確的工具。如果我使用TextWriter,會有性能提升嗎?
我不知道IO性能如何,所以任何幫助或一般的改進將不勝感激。謝謝。
自從我寫這個問題的時候,Linq2Csv項目就顯現出來了。這是處理我寫的代碼的好方法。 http://nuget.org/packages/LinqToCsv – jessegavin 2012-04-20 13:55:10
任何完整的解決方案源代碼? – Kiquenet 2012-08-14 09:19:23
對不起,它是爲我的一個客戶編寫的。你應該看看Linq2Csv。它會使這種事情變得更容易。 – jessegavin 2012-08-14 14:27:47