带索引的快速读取文件
本文关键字:读取 文件 索引 | 更新日期: 2023-09-27 18:20:05
我正试图读取一个巨大的文件。以前我使用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();
}
这很慢。我想每次它跳过然后取,它都会在每个循环中一遍又一遍地阅读所有的行。
有更好的方法吗?我现在唯一能想到的解决方案是把我的文件分成更小的块,这样我就可以阅读它,但我真的不敢相信没有解决办法。
是否遍历文件中的所有行,并希望每次查看新行时比较三行(前一行、当前行和下一行)?
如果是这样的话,那么在遍历所有行时,只需跟踪最后两行:
string previousLine = null,
currentLine = null;
foreach (string nextLine in File.ReadLines(filePath))
{
if (previousLine == null)
{
// Do something special for the first two lines?
}
else
{
// You're past the first two lines and now have previous,
// current, and next lines to compare.
}
// Save for next iteration
previousLine = currentLine;
currentLine = nextLine;
}