嵌套foreach循环添加DirectoryInfo.GetDirectories和GetFiles到一个数组

本文关键字:数组 一个 GetFiles 循环 foreach 添加 DirectoryInfo GetDirectories 嵌套 | 更新日期: 2023-09-27 18:18:25

如何遍历特定文件路径中的每个文件夹,然后遍历找到的每个文件夹中的每个文件?

        DirectoryInfo dir = new DirectoryInfo(@"C:'Path");
        foreach (DirectoryInfo folders in dir.GetDirectories())
        foreach (DirectoryInfo files in folders.GetFiles())

嵌套foreach循环添加DirectoryInfo.GetDirectories和GetFiles到一个数组

如果您要的是目录中的pdf列表,并且它是子目录,您可以这样做。

DirectoryInfo di = new DirectoryInfo("c:''output");
FileInfo[] files = di.GetFiles("*.pdf", SearchOption.AllDirectories);
foreach (var fileInfo in files)
{
     // do whatever you need
}

第二个foreach上的分号可能会使您感到悲伤,否则您的代码只需稍加修改即可正常工作。

        DirectoryInfo dir = new DirectoryInfo(@"C:'Path");
        foreach (DirectoryInfo folder in dir.GetDirectories())
        {
            foreach (FileInfo file in folder.GetFiles())
            { 
               // do stuff with file
            }
        }

你的题目和正文不完全匹配。我想你应该把所有子目录下的所有文件放到一个数组中。

一种方法是:

DirectoryInfo dir = new DirectoryInfo(@"C:'Path");
List<FileInfo> files = new List<FileInfo>();
foreach (DirectoryInfo folder in dir.GetDirectories())
    foreach (FileInfo file in folder.GetFiles())
    {
        files.Add(file);
    }
// files contains your list of files
DirectoryInfo dir = new DirectoryInfo(@"C:'Path");
foreach (DirectoryInfo folders in dir.GetDirectories())
{
   foreach (FileInfo files in folders.GetFiles())
   {
     //Do something
   }
}

Pfft.

foreach(var file in new DirectoryInfo(@"C:'Path")
                            .GetDirectories()
                            .SelectMany(x => x.GetFiles()))
    // linq baby

(顺便说一句,使用DI和FI,两个更有用但被忽略的框架类)