我目前正在开展一个项目,我必须从文本文件中删除一行特定的文本。
这是我已经拥有的代码:
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文件中的特定文本行。
答案 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;