【发布时间】:2016-02-01 22:22:56
【问题描述】:
我正在尝试读取一个巨大的文件。以前我使用File.ReadLines,它不会将整个数据读入内存。现在我需要在迭代时访问上一行和下一行。我尝试阅读整个文件,但得到了OutofMemoryException。
然后我开始寻找解决方案,发现我可以使用 Linq。我尝试使用以下内容:
var inputLines = File.ReadLines(filePath);
int count = inputLines.Count();
for (int i = 0; i < count; i++)
{
string line = inputLines.Skip(i).Take(1).First();
}
这很慢。我认为每次它 Skip 然后 Take 时,它都会在每个循环中一遍又一遍地读取所有行。
有没有更好的方法呢?我现在能想到的唯一解决方案是将我的文件分成更小的块,以便我可以阅读它,但我真的不敢相信没有解决方法。
【问题讨论】: