【问题标题】:Strip the last line from a text file从文本文件中删除最后一行
【发布时间】:2010-05-20 22:16:59
【问题描述】:

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

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

有人可以告诉我怎么做吗?

谢谢。

【问题讨论】:

    标签: c# text stream


    【解决方案1】:

    用少量的行,你可以很容易地使用这样的东西

    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);
    

    【讨论】:

    • 效果很好。非常感谢!
    【解决方案2】:

    对于小文件,一种简单的方法(尽管远非最有效)是:

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

    【讨论】:

      猜你喜欢
      • 2019-06-08
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多