带索引的快速读取文件

本文关键字:读取 文件 索引 | 更新日期: 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;
    }