我有一个很大的文本文件,超过1GB,并且我有一个表示行号的整数列表,需要生成另一个文件,其中包含新文件中原始文件行号的文本。
原始大文件示例:
ogfile line 1
some text here
another line
blah blah
所以当我得到“ 2,4,4,1”的列表时,输出文件应显示为:
some text here
blah blah
blah blah
ogfile line 1
我已经尝试过string lineString = File.ReadLines(filename).Skip(lineNumList[i]-1).Take(1).First();
但是这要花很长时间,因为必须读取文件,跳到有问题的行,然后在下一次重新读取...而且我们正在谈论1GB文件中的数百万行,而我的List<int>
是数千行号。
是否有更好/更快的方法来读取单行,或者让读者跳到特定的行号而不逐行“跳过”?
您可以使用StreamReader
和ReadLine
方法逐行读取而不会影响内存:
执行此操作的一种方法是只读取一次文件行(并将结果存储在变量中,然后获取所需的行。
使用StreamReader
,因此您不必读取整个文件,而只需等待最后一行即可。