我希望我的程序读取文件夹中包含的所有文件,然后执行所需的操作。
我已尝试过以下代码,但这是通过读取一个文件然后显示结果(即逐个文件)给我的结果:
foreach (string file in Directory.EnumerateFiles(@"C:\Users\karansha\Desktop\Statistics\Transfer", "*.*", SearchOption.AllDirectories))
{
Console.WriteLine(file);
System.IO.StreamReader myFile = new System.IO.StreamReader(file);
string searchKeyword = "WX Search";
string[] textLines = File.ReadAllLines(file);
Regex regex = new Regex(@"Elapsed Time:\s*(?<value>\d+\.?\d*)\s*ms");
double totalTime = 0;
int count = 0;
foreach (string line in textLines)
{
if (line.Contains(searchKeyword))
{
Match match = regex.Match(line);
if (match.Captures.Count > 0)
{
try
{
count++;
double time = Double.Parse(match.Groups["value"].Value);
totalTime += time;
}
catch (Exception)
{
// no number
}
}
}
}
double average = totalTime / count;
Console.WriteLine("RuleAverage=" + average);
// keep screen from going away
// when run from VS.NET
Console.ReadLine();
答案 0 :(得分:3)
从你的描述中我不清楚你想要实现的目标。但是,如果我理解了它的要点,你可以在进行任何处理之前收集所有文件的所有行:
IEnumerable<string> allLinesInAllFiles
= Directory.GetFiles(dirPath, "*.*")
.Select(filePath => File.ReadLines(filePath))
.SelectMany(line => line);
//Now do your processing
或使用集成语言功能
IEnumerable<string> allLinesInAllFiles =
from filepath in Directory.GetFiles(dirPath, "*.*")
from line in File.ReadLines(filepath)
select line;
答案 1 :(得分:1)
要获取文件夹中所有文件的路径,请使用:
string[] filePaths = Directory.GetFiles(yourPathAsString);
此外,您可以使用filePaths
对所有这些文件执行所需的操作。