我使用StreamReader
来读取文本文件中的行。对于每一行,我都有特定的操作。
示例:
System.IO.StreamReader file = new System.IO.StreamReader(fileDirectory); //Open StreamReader
while ((inFileString = file.ReadLine()) != null)
{
if(something)
{ do stuff... }
}
我的问题发生在读取最后一行之后,因为while
循环内的代码变得无法访问。它基本上就像我需要被允许在自动退出后再次通过while
循环。如何在从文件读取的最后一行上执行操作?
(我可以复制循环外的操作,但我认为这样效率很低......)
答案 0 :(得分:2)
我认为这样的事情看起来是可以接受的。
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);
}
}
答案 1 :(得分:1)
也许注意最好的解决方案,但......
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...
}
}
它不是最干净的代码,但我从来都不是完美的。
答案 2 :(得分:0)
您是否尝试过使用Peek()
方法?
using (var strReader = new System.IO.StreamReader())
{
while (strReader.Peek() > -1)
{
var line = strReader.ReadLine();
// Do Something
}
strReader.Close();
}