递归列出给定路径下的所有文件和文件夹? [复制]

Posted

技术标签:

【中文标题】递归列出给定路径下的所有文件和文件夹? [复制]【英文标题】:list recursively all files and folders under the given path? [duplicate] 【发布时间】:2011-04-12 06:09:15 【问题描述】:

可能重复:How to recursively list all the files in a directory in C#?

我想列出给定文件夹(路径)的文件和文件夹的“子路径”

假设我有文件夹 C:\files\folder1\subfolder1\file.txt

如果我给函数 c:\files\folder1\

我会得到 子文件夹1 子文件夹1\file.txt

【问题讨论】:

您已经检查过 FileInfo 和 DirectoryInfo 可用的 API?使用这些类实现您想要的行为非常简单...... 【参考方案1】:

您可以使用Directory.GetFiles 方法列出文件夹中的所有文件:

string[] files = Directory.GetFiles(@"c:\files\folder1\", 
    "*.*",
    SearchOption.AllDirectories);

foreach (var file in files)

    Console.WriteLine(file);

请注意,SearchOption 参数可用于控制搜索是递归的 (SearchOption.AllDirectories) 还是非递归的 (SearchOption.TopDirectoryOnly)。

【讨论】:

此解决方案不包括返回列表中的文件夹。 @galmok:使用Directory.GetFileSystemEntries(...) 代替Directory.GetFiles(...)"*" 代替"*.*"【参考方案2】:

试试这样的:

static void Main(string[] args)

    DirSearch(@"c:\temp");
    Console.ReadKey();


static void DirSearch(string dir)

    try
    
        foreach (string f in Directory.GetFiles(dir))
            Console.WriteLine(f);
        foreach (string d in Directory.GetDirectories(dir))
        
            Console.WriteLine(d);
            DirSearch(d);
        

    
    catch (System.Exception ex)
    
        Console.WriteLine(ex.Message);
    

【讨论】:

【参考方案3】:
String[] subDirectories;
String[] subFiles;
subDirectories = System.IO.Directory.GetDirectories("your path here");
subFiles = System.IO.Directory.GetFiles("your path here");

【讨论】:

真的很简单,而且很震撼。但是只获取名称 - foreach (String str in subDirectories) Console.WriteLine(str.Split('\\').Last()); foreach (String str in subFiles) Console.WriteLine(str.Split('\\').Last());【参考方案4】:

使用System.IO.Directory 类和its methods

【讨论】:

【参考方案5】:

我记得不久前在 SO 上解决了一个类似的问题,尽管它是在 VB 中。这是question。

【讨论】:

以上是关于递归列出给定路径下的所有文件和文件夹? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

递归法列出目录中的所有文件

Linux文件操作

在Unix中递归列出文件中的所有文件? [复制]

如何获取目录下的文件数(一行Python)

案例:遍历目录

有没有办法从给定路径获取所有子目录? [复制]