使用StreamReader读取文件的最后一行后执行操作

本文关键字:一行 操作 执行 读取 StreamReader 文件 最后 使用 | 更新日期: 2023-09-27 18:19:48

我正在使用StreamReader从文本文件中读取行。对于每一行,我都要执行特定的操作。

示例:

System.IO.StreamReader file = new System.IO.StreamReader(fileDirectory); //Open StreamReader
while ((inFileString = file.ReadLine()) != null)
{
    if(something)
    { do stuff... }
}

我的问题发生在读取最后一行之后,因为while循环中的代码变得不可访问。这基本上就像我需要被允许在while循环自动退出后再经历一次。如何对从文件中读取的最后一行执行操作?

(我可以在循环之外复制操作,但我认为这效率很低…)

使用StreamReader读取文件的最后一行后执行操作

我认为这样的东西看起来是可以接受的。

using (StreamReader file = new StreamReader(@"D:'Downloads'testfile.txt"))
{
    string str = "";
    while ((str = file.ReadLine()) != null || str == null)
    {
        if (str == null)
        {
            Console.WriteLine("Hey! We've already passed the EOF!");
            break;
        }
        Console.WriteLine(str);
    }
}

也许注意到最好的解决方案,但。。。

int TotalLines(string filePath)
{
    using (StreamReader r = new StreamReader(filePath))
    {
        int i = 0;
        while (r.ReadLine() != null)
        {
            i++;
        }
        return i;
    }
}
//Open StreamReader
System.IO.StreamReader file = new System.IO.StreamReader(fileDirectory);
for (int q = 0; q <= TotalLines + 1; i++)
{
    file.ReadLine();
    if (q == int + 1)
    { 
        //do stuff...
    }
}

这不是最干净的代码,但我从来都不是完美的。

您尝试过使用Peek()方法吗?

using (var strReader = new System.IO.StreamReader())
{
    while (strReader.Peek() > -1)
    {
        var line = strReader.ReadLine();
        // Do Something
    }
    strReader.Close();
}