C#中的完整目录列表

时间:2012-05-30 21:01:55

标签: c#

  

可能重复:
  How can I perform full recursive directory & file scan?

我找不到任何信息,如何在C#中创建完整的目录列表,包括其中的所有文件及其所有子文件夹的文件,即:

c:\a.jpg
c:\b.php
c:\c\d.exe
c:\e\f.png
c:\g\h.mpg

2 个答案:

答案 0 :(得分:6)

您可以使用DirectoryInfo.GetFiles(“C:\ *。*”,SearchOption.AllDirectories);

这将返回一个FileInfo个对象数组,其中包含文件名的Name和FullName属性。

话虽如此,我不会在“C:\”上执行此操作,因为您将返回巨大的数组,但此技术可在适当的文件夹上正常工作。

如果你使用的是.NET 4,我建议改用EnumerateFiles,这将返回IEnumerable<T>而不是数组。

请注意,上述代码很可能会失败,因为它需要完全权限才能搜索文件系统。如果您无法访问要搜索的文件系统的特定部分,则会引发SecurityException。

此外 - 如果您只对文件名感兴趣而不是完整的FileInfo信息,则可以使用Directory.EnumerateFiles代替IEnumerable<string>与所有相关的文件名。

答案 1 :(得分:0)

MSDN Article代码示例可以做到这一点。

这是钱:

void DirSearch(string sDir) 
{
    try 
    {
        foreach (string d in Directory.GetDirectories(sDir)) 
        {
            foreach (string f in Directory.GetFiles(d, txtFile.Text)) 
            {
                lstFilesFound.Items.Add(f);
            }
            DirSearch(d);
        }
    }
    catch (System.Exception excpt) 
    {
        Console.WriteLine(excpt.Message);
    }
}