【发布时间】:2014-01-07 03:33:08
【问题描述】:
我正在寻找从 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 文件导入数据?
【问题讨论】:
-
不要尝试自己解析它,只需使用 CSV 解析器,这样您就不需要自己解析字符串,也不需要处理所有奇怪的问题(引号转义,对于例如)并且可以只专注于使用数据。是的,无论何时处理任何文件,您都应该流式传输数据,除非有令人信服的理由不这样做。
-
快速通常不是您需要担心的 CSV。正确的是。你可能会认为你需要做的只是用逗号分隔,但这会让你进入一个受伤的世界。谷歌一些CSV Parsers
-
另外,
tx是什么,为什么在循环中刷新它有意义? -
在我的真实程序中,我有一个动态变化的输入,所以我添加了一个 Timer.Tick 事件,它每隔几秒就开始再次读取文件,tx 是一个显示数据的文本框我读过的。
标签: c# performance csv