从from.txt文件中删除文本行

时间:2012-05-16 09:22:58

标签: c# text

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

这是我已经拥有的代码:

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文件中的特定文本行。

3 个答案:

答案 0 :(得分:0)

我怀疑是领导/训练空间,这导致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,"")) 

如果以上工作,它将替换代码中的所有使用块

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

答案 1 :(得分:0)

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

编辑:错误地解释了你的问题。我以为你不能把你的更改写到同一个文件中,但你的文本甚至都没有被过滤掉。你应该尝试提拉的建议

答案 2 :(得分:0)

根据您的评论,我了解到您正在尝试删除以 - 开头的行。如果是这种情况,您只需要更改if条件:

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

为:

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