我正在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