C# 从文本文件中删除最后一行

C# 从文本文件中删除最后一行,c#,text,stream,C#,Text,Stream,我需要从文本文件中去掉最后一行。我知道如何在C#中打开和保存文本文件,但如何剥离文本文件的最后一行 文本文件的大小总是不同的(有些有80行,有些有20行) 有人能告诉我怎么做吗 谢谢。对于小文件,一个简单的方法(虽然远不是最有效的)是: string[] lines = File.ReadAllLines(fileName); Array.Resize(ref lines, lines.length - 1); File.WriteAllLines(fileName, lines); 只需少量

我需要从文本文件中去掉最后一行。我知道如何在C#中打开和保存文本文件,但如何剥离文本文件的最后一行

文本文件的大小总是不同的(有些有80行,有些有20行)

有人能告诉我怎么做吗


谢谢。

对于小文件,一个简单的方法(虽然远不是最有效的)是:

string[] lines = File.ReadAllLines(fileName);
Array.Resize(ref lines, lines.length - 1);
File.WriteAllLines(fileName, lines);

只需少量的行,您就可以轻松地使用类似这样的内容

string filename = @"C:\Temp\junk.txt";

string[] lines = File.ReadAllLines(filename);
File.WriteAllLines(filename, lines.Take(lines.Count() - 1));
但是,随着文件越来越大,您可能希望使用类似这样的方式来流式处理数据

string filename = @"C:\Temp\junk.txt";
string tempfile = @"C:\Temp\junk_temp.txt";

using (StreamReader reader = new StreamReader(filename))
{                
    using (StreamWriter writer = new StreamWriter(tempfile))
    {
        string line = reader.ReadLine();

        while (!reader.EndOfStream)
        {
            writer.WriteLine(line);
            line = reader.ReadLine();
        } // by reading ahead, will not write last line to file
    }
}

File.Delete(filename);
File.Move(tempfile, filename);

效果很好。非常感谢!