从CSV文件中读取数据

时间:2013-12-18 19:36:52

标签: c# performance csv

我正在寻找从CSV文件中读取数据的最快方法。我尝试过两种不同的方式。

方法#1:将CSV文件中的所有行读入数组,然后迭代数组:

String[] csv = File.ReadAllLines(@"E:\be.csv");

for (int i = 0; i < csv.Length; i++)
{
    tx.Text = csv[i];
    tx.Refresh();
}

方法#2 *:使用StreamReader

StreamReader sr = new StreamReader(new FileStream(@"E:\be.csv");

while (!sr.EndOfStream)
{
    string seg = sr.ReadLine();
    tx.Text = sr.ReadLine();
    tx.Refresh();
}

使用StreamReader似乎要快得多。是否有更快的方法从CSV文件导入数据?

3 个答案:

答案 0 :(得分:3)

我必须建议可以在NuGet中找到的CsvHelper。昨天第一次使用它,现在将是我的解决方案。

http://www.nuget.org/packages/CsvHelper/

关于什么更快的实际问题,我可能会说只是做File.ReadAllLines(...),但最好是你真的尝试设置一个测试来做两个选项几百次,看看哪一个选择了最长的。

另外,不要忘记丢弃StreamReader。继续将其包装在using语句中,以便一切都可能被关闭/处理。

答案 1 :(得分:3)

Sebastien Loren的Fast CSV Reader on CodeProject可能是要走的路。

它实现IDataReader并且主要像StreamReader。

强烈推荐。

答案 2 :(得分:1)

.NET有一个名为TextFieldParser的内置CSV解析器。