分割文本文件更快

本文关键字:文件 分割文本 | 更新日期: 2023-09-27 18:06:00

我读取了一个CSV文件,并通过写出每列逗号分隔的值将其转换为TXT文件。我希望该程序也能够将TXT文件转换回CSV,所以我创建了一个TXTReader类。我在阅读大的TXT文件时遇到了麻烦。我第一次尝试使用String.Split:

string fullText = File.ReadAllText(fileName);
string[] values = fullText.Split(',');

一开始是有效的,但是当带有逗号的字符串列出现时,程序会认为它是另一个列,而它只是一个字符串。我继续寻找解决方案,找到了https://stackoverflow.com/a/3147901/1870760。这对于小文件非常有效,但是对于我的31 MB TXT文件来说速度很慢。然后我尝试了我自己的hack方式,迭代fullText中的所有字符并检查"'"",因为所有字符串在TXT中都有引号,但这也花了很长时间(~10分钟)。我也不能使用https://stackoverflow.com/a/3148691/1870760,因为我的字符串列值有时包含'n,这导致读者认为这是一个新的行,它不是。

那么,我是否必须接受它需要一段时间来读取一个31 MB的TXT文件并将值分成几列,或者有更多的性能有效的方法来做到这一点?

分割文本文件更快

有一个项目,据说在低内存使用的情况下,csv读取/分割比regex快15倍。如果您希望稍后显示数据,甚至还支持Data Binding。可用的来源。

您可以自定义许多参数(包括断行选项),所以我认为它将足够智能来处理您的'n值,它绝对可以处理参数值中的逗号。

http://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader