从大文件中以非升序读取多行

问题描述 投票:0回答:2

我有一个很大的文本文件,超过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>是数千行号。

是否有更好/更快的方法来读取单行,或者让读者跳到特定的行号而不逐行“跳过”?

c# file filereader streamreader
2个回答
0
投票

您可以使用StreamReaderReadLine方法逐行读取而不会影响内存:


0
投票

执行此操作的一种方法是只读取一次文件行(并将结果存储在变量中,然后获取所需的行。


0
投票

使用StreamReader,因此您不必读取整个文件,而只需等待最后一行即可。

© www.soinside.com 2019 - 2024. All rights reserved.