列出目录+子目录中的所有文件和目录

der*_*uth 92 c# directory getdirectories subdirectory

我想列出该目录的目录和子目录中包含的每个文件和目录.如果我选择C:\作为目录,程序将获得它有权访问的硬盘驱动器上的每个文件和文件夹的每个名称.

列表可能看起来像

fd\1.txt
fd\2.txt
fd\a\
fd\b\
fd\a\1.txt
fd\a\2.txt
fd\a\a\
fd\a\b\
fd\b\1.txt
fd\b\2.txt
fd\b\a
fd\b\b
fd\a\a\1.txt
fd\a\a\a\
fd\a\b\1.txt
fd\a\b\a
fd\b\a\1.txt
fd\b\a\a\
fd\b\b\1.txt
fd\b\b\a

Rus*_* F. 168

string[] allfiles = Directory.GetFiles("path/to/dir", "*.*", SearchOption.AllDirectories);
Run Code Online (Sandbox Code Playgroud)

*.*模式在哪里匹配文件

如果还需要目录,您可以这样:

 foreach (var file in allfiles){
     FileInfo info = new FileInfo(file);
 // Do something with the Folder or just add them to a list via nameoflist.add();
 }
Run Code Online (Sandbox Code Playgroud)

  • `GetFiles` 方法返回一个字符串数组。 (2认同)

Ala*_*Maw 45

Directory.GetFileSystemEntries存在于.NET 4.0+中并返回文件和目录.这样称呼它:

string[] entries = Directory.GetFileSystemEntries(path, "*", SearchOption.AllDirectories);
Run Code Online (Sandbox Code Playgroud)

请注意,它无法处理列出您无权访问的子目录(UnauthorizedAccessException)的内容的尝试,但它可能足以满足您的需求.

  • 这是迄今为止最好的答案.它将所有文件和文件夹放在一行代码中,而其他代码都没有. (3认同)

Guf*_*ffa 14

使用GetDirectoriesGetFiles方法获取文件夹和文件.

使用它来获取子文件夹中的文件夹和文件.SearchOption AllDirectories


小智 9

public static void DirectorySearch(string dir)
{
    try
    {
        foreach (string f in Directory.GetFiles(dir))
        {
            Console.WriteLine(Path.GetFileName(f));
        }
        foreach (string d in Directory.GetDirectories(dir))
        {
            Console.WriteLine(Path.GetFileName(d));
            DirectorySearch(d);
        }
    }
    catch (System.Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 如果您可以添加一些代码所做的解释,它会改善您的答案. (3认同)