这是我的代码:
StreamReader reader = new StreamReader("war.txt");
string input = null;
while ((input = reader.ReadLine()) != null)
{
Console.WriteLine(input);
}
reader.Close();
上面的程序逐行读取并从文件“ war.txt”中打印出来.我需要重新编写程序,以便以相反的顺序打印出来,即最后一行第一和最后一行.例如,如果“ war.txt”包含以下内容:
Hello.
How are you?
Thank you.
Goodbye.
该程序应打印出:
Goodbye.
Thank you.
How are you?
Hello.
我是C#的新手,请帮忙!谢谢!
解决方法:
为此,您无论如何都要缓冲数据(除非您使用FileStream API进行一些棘手的工作以向后读取文件).怎么样:
var lines = File.ReadAllLines("war.txt");
for(int i = lines.Length - 1; i >= 0; i--)
Console.WriteLine(lines[i]);
它只是将文件(按行)加载到一个数组中,然后从末尾开始打印该数组.
LINQ版本是:
foreach(var line in File.ReadLines("war.txt").Reverse())
Console.WriteLine(line);
但坦率地说,阵列版本效率更高.