如何逐行阅读文件列表? 我有一个包含许多文件的目录,我需要将所有文件保存在列表中并逐行处理它们。
到目前为止,我已完成以下工作:
//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
}
}
执行时,我收到异常,找不到文件。即使列表中有文件名。
答案 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);
}
}