如何从大文件中的特定行读取特定行
问题描述:
并将这些行添加到列表框中。 (Windows窗体)如何从大文件中的特定行读取特定行
我会用:
String file_name = @"x:\....";
int first_line = 24536;
int last_line = 25536;
for (int i = first_line; i <= last_line; i++)
{
this.listBox.Items.Add(File.ReadLines(this.file_name).ElementAt(i));
}
但是这需要大量的时间来加载1000行。
我该如何更有效地做到这一点(更快)?
答
当前你每次打电话ElementAt
- 这意味着从头读取文件为每个新行。
试试这个:
string[] lines = File.ReadLines(fileName)
.Skip(firstLine - 1) // Assuming 1-based line numbers
.Take(lastLine - firstLine)
.ToArray();
listBox.Items.AddRange(lines);
(请注意,我从你的变量名删除的非常规下划线。)
附注:行号通常是基于1-index的。 :) – leppie 2012-07-25 08:30:55
@leppie:好点。将修复和评论。 – 2012-07-25 08:40:08
@JonSkeet谢谢。这比我预期的要快得多。 – Qsiris 2012-07-25 09:05:16