为每个c#文件读取行

本文关键字:读取 文件 | 更新日期: 2023-09-27 17:49:17

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

到目前为止,我已经完成了以下操作:

//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
   }
}

执行时,我得到一个异常,文件未找到。尽管列表中充满了文件名

为每个c#文件读取行

EnumerateFiles()返回FileInfo对象的列表,File.ReadLines()接受string路径参数;你可能想在foreach中使用File.ReadLines(fileName.Value.FullName),因为它给出了实际文件的路径;OpenText()返回StreamReader对象

这个较小的代码应该执行

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

当所有这些都失败时,请参阅文档

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