我正在寻找逐行读取CSV文件的最佳方法。我想知道做同样事情的最有效方法是什么。当文件的大小很大时,我特别担心。 .NET类中的文件读取实用程序是否最有效?
(PS:我已经搜索了“Efficient”这个词,以便在发布此内容之前知道某人是否已经发布了类似的问题。)
答案 0 :(得分:3)
您可以尝试:fast CSV Parser。
以下是基准测试结果:
为了提供更多的地球数字, 使用包含145的45 MB CSV文件 阅读器,字段和50,000条记录 处理大约30 MB /秒。所以 总共需要1.5秒!该 机器规格为P4 3.0 GHz,1024 MB。
答案 1 :(得分:1)
.NET中的文件处理很好。如果您想使用foreach
以一种舒适的方式一次阅读一行,我可能需要查看simple LineReader
class(在MiscUtil中使用更通用的版本)。
您可以使用:
foreach (string line in new LineReader(file))
{
// Do the conversion or whatever
}
它也很容易与LINQ一起使用。您可能会或可能不会觉得这有用 - 如果Ngu Soon Hui的建议适合您,那可能是更好的“现成”解决方案。