如何从特定行读取大文件中的特定行

Qsi*_*ris 1 .net c# file-io visual-studio-2010 winforms

并将这些行添加到ListBox.(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));
}
Run Code Online (Sandbox Code Playgroud)

但这需要花费大量时间来加载1000行.

我怎样才能更有效(更快)地完成这项工作?

Jon*_*eet 8

目前,您ElementAt每次都在调用- 这意味着每个新行都从头开始读取文件.

试试这个:

string[] lines = File.ReadLines(fileName)
                     .Skip(firstLine - 1) // Assuming 1-based line numbers
                     .Take(lastLine - firstLine)
                     .ToArray();
listBox.Items.AddRange(lines);
Run Code Online (Sandbox Code Playgroud)

(请注意,我已从变量名中删除了非常规下划线.)