c# - (C#) 如何读取文件夹中的所有文件以查找特定行?

标签 c#

我是 C# 的新手,所以请耐心等待。我想要做的是读取一个文件夹中的所有文件,找到特定的行(在同一个文件中可能出现不止一次)并将该输出显示在屏幕上。

如果有人能指出我需要使用哪些方法的方向,那就太好了。 谢谢!

最佳答案

开始于

const string lineToFind = "blah-blah";
var fileNames = Directory.GetFiles(@"C:\path\here");
foreach (var fileName in fileNames)
{   
    int line = 1;     
    using (var reader = new StreamReader(fileName))
    {
         // read file line by line 
         string lineRead;
         while ((lineRead = reader.ReadLine()) != null)
         {
             if (lineRead == lineToFind)
             {
                 Console.WriteLine("File {0}, line: {1}", fileName, line);
             }
             line++;
         }
    }
}

正如尼克在下面指出的那样,您可以使用任务库进行并行搜索,只需将“foreach”替换为 Parallel.Foreach(filesNames, file=> {..});

Directory.GetFiles:http://msdn.microsoft.com/en-us/library/07wt70x2

流阅读器:http://msdn.microsoft.com/en-us/library/f2ke0fzy.aspx

关于c# - (C#) 如何读取文件夹中的所有文件以查找特定行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11059456/

相关文章:

c# - TripleDES 加密和解密给出奇怪的结果

c# - 如何获取 "left-most 128 bits of a byte array"?

c# - 点击刷新网页后,再次触发 Button1_Click 事件

c# - 具有公共(public)字段的不同类之间的 IEnumerable.Except()

c# - Ado.net 从多线程调用存储过程比单线程慢

c# - Lambda 编译失败,引用在 '' 范围内定义,但未定义

c# - 通过事件处理程序发送参数?

c# - 为什么 BotConnector 的行为与模拟器不同?

c# - 使用 ref 表示参数将被修改

c# - 对 UserControl 进行验证工作