查看文件是否包含特定字符串,然后读取该行

时间:2015-06-25 08:18:59

标签: c# foreach

我正在使用这个foreach循环来搜索目录中的文件,然后阅读它们。

    foreach (string file in Directory.EnumerateFiles(location, "*.MAI"))

在这个循环中,我想在文件中搜索包含单词“Sended”的行。有没有办法找到这个单词,然后读取该行?

2 个答案:

答案 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
            };

完整信息,请点击此处:https://msdn.microsoft.com/library/dd383503.aspx

答案 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
                }
            }
        }