从.txt文件中删除文本行

本文关键字:文本 删除 txt 文件 | 更新日期: 2023-09-27 18:34:23

我目前正在做一个项目,我必须从文本文件中删除一行特定的文本。

这是我已经拥有的代码:

static void Main( string[] args )
    {
        string line = null;
        string line_to_delete = "--";
        string desktopLocation = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
        string text = Path.Combine( desktopLocation, "tim3.txt" );
        string file = Path.Combine( desktopLocation, "tim4.txt" );
        using (StreamReader reader = new StreamReader( text))
        {
            using (StreamWriter writer = new StreamWriter(file ))
            {
                while((line = reader.ReadLine()) != null)
                {
                    if (string.Compare( line, line_to_delete ) == 0)
                        continue;
                    writer.WriteLine( line );
                }
            }

这只会将文本写入新的 txt 文件,但不会删除任何内容。

谢谢。主要问题是我只需要删除txt文件中的特定文本行。

从.txt文件中删除文本行

我怀疑前导/训练空间导致 String.comapre 返回意外结果

而不是

 if (string.Compare( line, line_to_delete ) == 0)

尝试

if(String.IsNullOrEmpty(line) || String.Equals(line.Trim(), line_to_delete))

如上所述不起作用,您可以尝试以下操作(LINQ)

编辑 - 仅替换文本

File.WriteAllText(file, File.ReadAllText(text).Replace(line_to_delete,"")) 

如果上述有效,它将替换代码中的所有使用块

如果以上不起作用,我怀疑这是数据问题(文本文件中不存在"__")

据我所知,您无法同时读取和写入文件(文件锁定)。您可以做的是将适当的数据写入 tim4.txt(如您的示例中所示),完成后,删除 tim3.txt并将 tim4.txt 重命名为 tim3.txt。

编辑:米斯解释了你的问题。我以为你不能将更改写入同一个文件,但你的文本甚至没有被过滤。你应该试试Tilan的建议<</p>

div class="answers>

从你的评论中,我知道你正在尝试删除以--.开头的行如果是这种情况,您只需将 if 条件从:

            if (string.Compare( line, line_to_delete ) == 0)
                continue;

自:

            if (line.Trim().IndexOf(line_to_delete) == 0)
                continue;