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

标签 c# foreach

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

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

在此循环内,我想在文件中搜索包含单词“已发送”的行。有没有办法找到这个词然后读那一行?

最佳答案

试一试:

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

关于c# - 查看文件是否包含特定字符串,然后读取该行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31044841/

相关文章:

c# - 我们可以同时从 CodeExpressions 和文字源代码构造一个程序集吗?

php - Codeigniter - 返回与特定位置关联的成员

javascript - 在对象数组中查找属性(作为字符串存储在变量中)

php - 在第四张专辑 PHP 之后添加新行

r - 使用 type = MPI 的 "doParallel"包和直接使用 doMPI 有什么区别?

c++ - 指向数组的指针在 STL 与常规 for 循环中不同

c# - 调试时是否可以将 "see"放入 C# foreach 循环的迭代集合中?

c# - 游戏关卡意外地相互叠加

c# - 如何将 List<object> 保存到 C# uwp 中的设置

c# - C# 中 byte 和 Byte 数据类型的区别