-2

可能重复:
如何执行完整的递归目录和文件扫描?

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

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

2 回答 2

6

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

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

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

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

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

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

于 2012-05-30T21:04:05.427 回答
0

有一篇带有代码示例的MSDN 文章可以做到这一点。

这是钱:

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);
    }
}
于 2012-05-30T21:07:15.007 回答