c# - 有条件地从文本文件中删除最后一行

标签 c# file text line

我昨天在 SO 上发布了这个,我收到了一个很好的答案,但我需要改变它,我不知道如何。

这是我的 original question :


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

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

怎么做?


这是别人给我的代码(效果很好)

//Delete the last line from the file.  This line could be 8174, 10000, or anything.  This is from SO
string tempfile = @"C:\junk_temp.txt";

using (StreamReader reader2 = new StreamReader(newfilename))
{
    using (StreamWriter writer2 = new StreamWriter(tempfile))
    {
        string line = reader2.ReadLine();

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

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

如果文本文件的最后一行是 4 位或 5 位数字字符串(例如 8001 或 99999),我该如何将其更改为仅删除文本文件的最后一行。

如果是除此之外的任何内容,例如 %,那么我不想删除最后一行。

有人可以修改上面的代码来为我做这个吗?

最佳答案

要保持与当前代码中相同的逻辑,您可以执行以下操作

        //Delete the last line from the file.  This line could be 8174, 10000, or anything.  This is from SO 
        string tempfile = @"C:\junk_temp.txt"; 

        using (StreamReader reader2 = new StreamReader(newfilename)) 
        { 
            using (StreamWriter writer2 = new StreamWriter(tempfile)) 
            { 
                string line = reader2.ReadLine(); 

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

                // If the last line read does not match your condition
                // we write it to the new file
                if (!Regex.IsMatch(line, @"^\d{4,5}$"))
                {
                    writer2.WriteLine(line); 
                } 
            } 
        } 

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

关于c# - 有条件地从文本文件中删除最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2885436/

相关文章:

html - 角度输入文件 : Selecting the same file

c# - TextMeshPro 空引用异常

文本数组到电子邮件正文

c# - 错误消息将使用枚举与 EF 和 Web API

c# - 任务中的异步套接字操作

c# - GetElementById() 找不到标签?

PHP:如何使用通配符搜索文件

c - 扫描名称和奇怪的字符串: Files

css - 由于另一个 div 而没有明显原因的 Div 偏移

c# - 不可见的 Gridview 列获取 0 值