C# 使用StreamReader读取文件的最后一行后执行操作
我正在使用C# 使用StreamReader读取文件的最后一行后执行操作,c#,wpf,loops,streamreader,C#,Wpf,Loops,Streamreader,我正在使用StreamReader从文本文件中读取行。对于每一行,我都会执行特定的操作 例如: System.IO.StreamReader file = new System.IO.StreamReader(fileDirectory); //Open StreamReader while ((inFileString = file.ReadLine()) != null) { if(something) { do stuff... } } 我的问题发生在读取最后一行之后,因
StreamReader
从文本文件中读取行。对于每一行,我都会执行特定的操作
例如:
System.IO.StreamReader file = new System.IO.StreamReader(fileDirectory); //Open StreamReader
while ((inFileString = file.ReadLine()) != null)
{
if(something)
{ do stuff... }
}
我的问题发生在读取最后一行之后,因为while
循环中的代码变得不可访问。这基本上就像我需要被允许在循环自动退出后,再次通过while
循环一样。如何对从文件中读取的最后一行执行操作
(我可以在循环之外复制操作,但我认为这样做效率很低……您是否尝试过使用
Peek()
方法
using (var strReader = new System.IO.StreamReader())
{
while (strReader.Peek() > -1)
{
var line = strReader.ReadLine();
// Do Something
}
strReader.Close();
}
也许注意到最好的解决方案,但是
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...
}
}
int totalines(字符串文件路径)
{
使用(StreamReader r=新的StreamReader(文件路径))
{
int i=0;
while(r.ReadLine()!=null)
{
i++;
}
返回i;
}
}
//开放式流阅读器
System.IO.StreamReader file=new System.IO.StreamReader(fileDirectory);
对于(intq=0;q我认为这样的事情看起来可以接受
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);
}
}
出于好奇,为什么不直接使用File.ReadAllLines(fileDirectory)
而不是打开一个流然后读取行?这会给你一个可以迭代的数组。@siva.k当文件很大时,读取内存中的所有文本不是一件好事。我认为OP方法很好,因为他的业务逻辑允许逐行处理文件。@pwas啊,是的,很好。@pwas在这种情况下,我建议File.ReadLines
这是一种懒惰的、更好的替代方法。我猜您已经这样做了,但问一下也无妨。您是否尝试过在调试器中单步检查代码,以确保在文件最后一行的循环中跳过?我尝试过这个方法,似乎效果完全相同,但我的问题是:最后一行的操作被忽略了。非常感谢。由于简单,我最终改变了我的答案。@CalvinSmith的答案对我也很有用。