如何使用C#读取文件夹中存在的一个实例中的所有文件?

时间:2013-03-06 12:41:58

标签: c#

我希望我的程序读取文件夹中包含的所有文件,然后执行所需的操作。

我已尝试过以下代码,但这是通过读取一个文件然后显示结果(即逐个文件)给我的结果:

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();

2 个答案:

答案 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对所有这些文件执行所需的操作。