C# 从没有名称的文本文件中删除特定行

C# 从没有名称的文本文件中删除特定行,c#,C#,我需要找到并删除所有包含单词recto的行 我确实在stackoverflow论坛中搜索过,但我找到的只是使用路径目录和文件名删除该行 在我的例子中,我想删除目录中具有特定扩展名*.txt的所有文件中包含recto的行 谢谢你的帮助 这是到目前为止我的代码 string sourceDir = @"C:\SRCE\"; string destinDir = @"C:\DIST\"; string[] files = Directory.Ge

我需要找到并删除所有包含单词recto的行

我确实在stackoverflow论坛中搜索过,但我找到的只是使用路径目录和文件名删除该行

在我的例子中,我想删除目录中具有特定扩展名*.txt的所有文件中包含recto的行

谢谢你的帮助

这是到目前为止我的代码

            string sourceDir = @"C:\SRCE\";
        string destinDir = @"C:\DIST\";
        string[] files = Directory.GetFiles(sourceDir);
        foreach (string file in files)
        {
            using (StreamReader sr_ = new StreamReader
            (sourceDir + Path.GetFileName(file)))
            {
                string line = sr_.ReadLine();
                if (line.Contains("recto"))
                {
                    File.Copy(file, destinDir + Path.GetFileName(file));
                    string holdName = sourceDir + Path.GetFileName(file);
                }
                sr_.DiscardBufferedData();
                sr_.Close();
            }
        }
    }

你可以试试这样的。你只是用这个词来识别文件,但没有尝试删除它。最后,您复制了包含单词recto的文件

            string sourceDir = @"C:\SRCE\";
            string destinDir = @"C:\DIST\";
            string[] files = Directory.GetFiles(sourceDir);
            foreach (string file in files)
            {
                using (StreamReader sr_ = new StreamReader
                (sourceDir + Path.GetFileName(file)))
                {
                    string res = string.Empty;

                    while(!sr_.EndOfStream)
                    {
                        var l = sr_.ReadLine();

                        if (l.Contains("recto"))
                        {
                            continue;
                        }

                        res += l + Environment.NewLine;
                    }

                    var streamWriter = File.CreateText(destinDir + Path.GetFileName(file));
                    streamWriter.Write(res);
                    streamWriter.Flush();
                    streamWriter.Close();
                }
            }

如果文件不是很大,您可以简化很多代码,读取内存中的所有行,使用Linq处理这些行,然后重写文件

string sourceDir = @"C:\SRCE\";
string destinDir = @"C:\DIST\";
string[] files = Directory.GetFiles(sourceDir);
foreach (string file in files)
{
    var lines = File.ReadLines(file);
    var result = lines.Where(x => x != "recto").ToArray();
    File.WriteAllLines(Path.Combine(destinDir, Path.GetFileName(file)), result);
}

是否要删除?或者将不包含单词的文件复制到其他目录?该死的Zinov,我想要的是修改删除行并将新文件复制到下一个目录这些文本文件有多大?