【发布时间】:2011-03-25 08:20:09
【问题描述】:
我正在 C# 中创建一个方法,它为 Google Product Feed 生成一个文本文件。提要将包含超过 30,000 条记录,文本文件目前的大小约为 7Mb。
这是我当前使用的代码(为简洁起见,删除了一些行)。
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 项目就诞生了。这是处理我正在编写的代码的更好方法。 nuget.org/packages/LinqToCsv
-
任何完整的源代码和解决方案?
-
抱歉,这是为我的一位客户编写的。你真的应该研究一下 Linq2Csv。它会让这类事情变得容易得多。
-
自我上次对这个问题发表评论以来已经快 5 年了,我强烈推荐 CsvHelper。 joshclose.github.io/CsvHelper
标签: c# text-files io