【问题标题】:Text Parsing Tab Delimited file文本解析制表符分隔文件
【发布时间】:2011-10-10 21:36:40
【问题描述】:

我有一个读取文件的方法。该文件大约有 30000 行。但是,当我将它读入数组时,我的数组会得到一个随机长度。我已经看到它低至6000。

两个都用过

string[] lines = System.IO.File.ReadAllLines(@"C:\out\qqqqq.txt");

System.IO.StreamReader file = new System.IO.StreamReader(@"C:\out\qqqqq.txt");

(并使用计数器。)

但我得到了相同的结果。我可以在 Excel 中看到这些太小了。

【问题讨论】:

  • 你能在记事本中打开文件,走到最后,看看它告诉你有多少行吗?
  • 文件的来源是什么?你试过 File.ReadAllLines(@"C:\out\qqqqq.txt", System.Text.Encoding.Unicode) 吗?
  • @Jim excel 和记事本是一样的。
  • @Mark:是的。打开状态行。但是,如果启用了自动换行,则无法显示状态行。记事本几乎不烂。
  • @Jim Mischel:哇,我从来不知道你能做到这一点! :)

标签: c# parsing


【解决方案1】:

如果文件中的行尾不一致(有时是\n,有时是\r\n,有时是\r),那么您可以尝试将整个文件作为字符串读取并自行拆分:

string file = System.IO.File.ReadAllText(@"C:\out\qqqqq.txt");
var lines = file.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);

对于大文件,这是低效的,因为它需要读取整个文件 - 使用 StreamReader 您可以在处理文件时逐行读取文件。如果性能是一个问题,那么您可以编写一个简单的工具来首先纠正行尾。

【讨论】:

  • 这也会删除合法的空行。
  • @JimMischel - 是的,但如果结尾不一致,则不清楚什么是合法的空白行。比如\r\n是空行还是空行?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-16
  • 2015-02-14
  • 2017-07-17
相关资源
最近更新 更多