从.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文件中的特定文本行。
我怀疑前导/训练空间导致 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>
从你的评论中,我知道你正在尝试删除以--.开头的行如果是这种情况,您只需将 if 条件从:
if (string.Compare( line, line_to_delete ) == 0)
continue;
自:
if (line.Trim().IndexOf(line_to_delete) == 0)
continue;