【问题标题】:Full directory listing in C# [duplicate]C# 中的完整目录列表 [重复]
【发布时间】:2012-06-05 03:44:59
【问题描述】:

可能重复:
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

【问题讨论】:

标签: c#


【解决方案1】:

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

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

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

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

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

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

【讨论】:

  • 这将返回一个巨大的数组...
  • @Kirk Woll 希望他实际上并不打算将这些文件直接保存在 C:\ :)
  • 我希望“C:\\”不是这里的搜索字符串,只是作为一个例子......
【解决方案2】:

有一个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);
    }
}

【讨论】:

    猜你喜欢
    • 2012-10-18
    • 2019-06-26
    • 2017-08-22
    • 1970-01-01
    • 2016-02-07
    • 2012-10-04
    • 1970-01-01
    • 2021-03-15
    • 2013-08-17
    相关资源
    最近更新 更多