我正在使用这个foreach循环来搜索目录中的文件,然后阅读它们。
foreach (string file in Directory.EnumerateFiles(location, "*.MAI"))
在这个循环中,我想在文件中搜索包含单词“Sended”的行。有没有办法找到这个单词,然后读取该行?
答案 0 :(得分:4)
试一试:
var location = @"<your location>";
foreach (string file in Directory.EnumerateFiles(location, "*.MAI"))
{
var findedLines = File.ReadAllLines(file)
.Where(l => l.Contains("Sended"));
}
如果您使用大文件,则应使用 ReadLines 方法,因为当您使用 ReadLines 时,您可以在返回整个集合之前开始枚举字符串集合;当您使用 ReadAllLines 时,必须等待返回整个字符串数组才能访问该数组。
msdn的另一个例子:
var files = from file in Directory.EnumerateFiles(location, "*.MAI")
from line in File.ReadLines(file)
where line.Contains("Sended")
select new
{
File = file,
Line = line
};
答案 1 :(得分:1)
如果.MAI文件是Textfiles,请尝试以下操作:
foreach (string file in Directory.EnumerateFiles(location, "*.MAI"))
{
foreach (string Line in File.ReadAllLines(file))
{
if (Line.Contains("Sended"))
{
//Do your stuff here
}
}
}