C#返回位于其中包含文件夹的目录中的所有文件[重复]

Posted

技术标签:

【中文标题】C#返回位于其中包含文件夹的目录中的所有文件[重复]【英文标题】:C# returning all files located in a directory which has folders in it [duplicate] 【发布时间】:2021-05-14 10:53:58 【问题描述】:

如何检索包含文件、子文件夹和该文件夹中的文件的目录中的所有文件。

注意:文件夹/文件不固定

【问题讨论】:

【参考方案1】:

您可以将DirectoryInfo.GetFiles 方法与RecurseSubdirectories 选项一起使用。

using System.IO;

FileInfo[] files 
    = new DirectoryInfo(@"C:\Program Files")
    .GetFiles("*", new EnumerationOptions  RecurseSubdirectories = true );

如果您不需要完整的文件列表,枚举目录的内容可能会更快。

using System.IO;
using System.Collections.Generic;
using System.Linq;

var directory = new DirectoryInfo(@"C:\Program Files");
IEnumerable<FileInfo> files 
    = from file in directory.EnumerateFiles("*", new EnumerationOptions  RecurseSubdirectories = true )
      where file.Name = "target.txt"
      select file;

foreach (FileInfo file in files)

    //...

                           

【讨论】:

【参考方案2】:

您可以使用Directory.GetFiles(path) 和Directory.GetDirectories(path)

static void ScanDir(string path, int spaces = 0)

    var files = Directory.GetFiles(path);
    foreach (var file in files)
    
        for (int i = 0; i < spaces; i++)
            Console.Write(" "); // Just for styling

        Console.WriteLine(file);
    

    var dirs = Directory.GetDirectories(path);
    foreach (var dir in dirs)
    
        ScanDir(dir, spaces + 4);
    



static void Main()

    ScanDir("C:\\path\\to");

【讨论】:

以上是关于C#返回位于其中包含文件夹的目录中的所有文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从包含 pdf 路径的列表文件中打开 pdf [重复]

从 List<OwnStruct> 返回 List<T> 的方法,其中 List<T> 仅包含 List 中所有 OwnStructs 的一个属性(C#)[重复]

返回每个文件的文件 URL 的 NSArray

在 find 和 ls 中使用通配符 [重复]

在所有子目录中的文件中查找和替换文本[重复]

C# 使用 EnumerateDirectories 列出所有“叶子”子目录