我正在寻找从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文件导入数据?
答案 0 :(得分:3)
我必须建议可以在NuGet中找到的CsvHelper。昨天第一次使用它,现在将是我的解决方案。
http://www.nuget.org/packages/CsvHelper/
关于什么更快的实际问题,我可能会说只是做File.ReadAllLines(...)
,但最好是你真的尝试设置一个测试来做两个选项几百次,看看哪一个选择了最长的。
另外,不要忘记丢弃StreamReader
。继续将其包装在using
语句中,以便一切都可能被关闭/处理。
答案 1 :(得分:3)
答案 2 :(得分:1)
.NET有一个名为TextFieldParser的内置CSV解析器。