C# 从CSV文件读取数据
我正在寻找从CSV文件读取数据的最快方法。我尝试了两种不同的方法 方法#1:将CSV文件中的所有行读取到一个数组中,然后迭代该数组:C# 从CSV文件读取数据,c#,performance,csv,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(); } 使用StreamReader似乎要快得多。有没有更快的方法从CSV文件导入数据?我必须推荐可以在N
String[] csv = File.ReadAllLines(@"E:\be.csv");
for (int i = 0; i < csv.Length; i++)
{
tx.Text = csv[i];
tx.Refresh();
}
使用
StreamReader
似乎要快得多。有没有更快的方法从CSV文件导入数据?我必须推荐可以在NuGet中找到的CsvHelper。昨天我第一次使用它,现在它将成为我的解决方案
对于您的实际问题,即什么更快,我可能会说只是执行File.ReadAllLines(…)
,但最好是实际尝试并设置一个测试,以执行这两个选项数百次,并查看哪一个花费的时间最长
另外,不要忘记处置您的StreamReader
。继续,使用语句将其包装在中,这样所有事情都可能被关闭/处置。塞巴斯蒂安·罗兰的可能是解决方法
它实现了IDataReader
,其作用主要类似于StreamReader
强烈推荐。.NET有一个名为的内置CSV解析器。不要试图自己解析它,只要使用CSV解析器,这样你就不需要自己解析字符串,也不需要处理所有奇怪的问题(例如,引号转义),只需专注于使用数据即可。是的,无论何时处理任何文件,你都应该流式传输数据,除非有令人信服的理由不这样做。使用CSV,通常不需要担心Fast。没错。你可能认为你所需要做的就是用逗号分开,但这会让你陷入一个受伤的世界。谷歌还有一些,什么是tx
,为什么在循环中刷新它有意义?在我的实际程序中,我有一个动态变化的输入,所以我添加了一个计时器。勾选事件,每隔几秒钟就开始在文件中读取,tx是一个文本框,显示我读取的数据。
StreamReader sr = new StreamReader(new FileStream(@"E:\be.csv");
while (!sr.EndOfStream)
{
string seg = sr.ReadLine();
tx.Text = sr.ReadLine();
tx.Refresh();
}