读取每个文件的行c#

时间:2016-06-24 18:43:56

标签: c#

如何逐行阅读文件列表? 我有一个包含许多文件的目录,我需要将所有文件保存在列表中并逐行处理它们。

到目前为止,我已完成以下工作:

//fetching all files from directory
DirectoryInfo d = new DirectoryInfo("path");
Dictionary<int, FileInfo> DatFiles = new Dictionary<int, FileInfo>();
int filecounter = 1;


foreach (var dat in d.EnumerateFiles())
{
    DatFiles.Add(filecounter, dat);
    filecounter++;
}
    Console.WriteLine(filecounter);
foreach (var fileName in DatFiles)
{

   foreach (var line in File.ReadLines(fileName.Value.OpenText().ToString()))
   {
      //run some methods
   }
}

执行时,我收到异常,找不到文件。即使列表中有文件名。

3 个答案:

答案 0 :(得分:1)

EnumerateFiles()返回FileInfo个对象的列表,File.ReadLines()获取string个路径参数;您可能希望在File.ReadLines(fileName.Value.FullName)中使用foreach,因为它提供了实际文件的路径; OpenText()会返回StreamReader个对象。

答案 1 :(得分:0)

这个较小的代码应该完成任务

var files = Directory.GetFiles("path");
foreach(var f in files)
{
    using(StreamReader reader = new StreamReader(f))
    {
       var lines = reader.ReadToEnd().Split(new string[]{Environment.NewLine});
//    Do here
     }

}

答案 2 :(得分:0)

当其他所有方法都失败时,请参阅documentation

// Open the stream and read it back.
using (StreamReader sr = fi.OpenText())
{
    string s = "";
    while ((s = sr.ReadLine()) != null) 
    {
        Console.WriteLine(s);
    }
}