我需要找到并删除包含单词" recto",
的所有行我在stackoverflow论坛上搜索过,但我发现的所有内容都是使用路径(目录和文件名)来删除(删除行)。
在我的情况下,我想删除包含" recto"在目录中具有特定扩展名(* .txt)的所有文件中。
感谢您的帮助
这是我到目前为止的代码
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();
}
}
}
答案 0 :(得分:0)
你可以尝试这样的事情。您只是识别带有该单词的文件,但没有尝试删除它。最后,您正在复制包含单词" 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();
}
}
答案 1 :(得分:0)
如果文件不是很大,你可以简化很多代码,读取内存中的所有行,使用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);
}