【问题标题】:Listing all files in a directory and sub-directories C# [duplicate]列出目录和子目录中的所有文件C# [重复]
【发布时间】:2017-05-01 22:29:42
【问题描述】:

我想查找并添加特定目录及其所有子目录中的所有文件名,并将它们添加到 C# 中的列表中。我曾尝试使用 DirectoryInfo,但它只返回当前目录中的文件,而不是其子文件夹中的文件。有什么简单的方法可以实现吗?

【问题讨论】:

  • 你需要创建一个递归方法来提取完整​​目录的结构
  • var list = Directory.EnumerateFiles(@"C:\MyFiles\", "*", SearchOption.AllDirectories).ToList();

标签: c#


【解决方案1】:

SearchOption.AllDirectories 可能会为您解决问题,因为它在搜索操作中包含当前目录及其所有子目录。此选项包括重新解析点,例如搜索中的已安装驱动器和符号链接。

//Add System.IO then
String[] allfiles = Directory.GetFiles("DirectorytoSearch", "*", SearchOption.AllDirectories);

并将它们转换为列表

List<string> allfiles = Directory.GetFiles("DirectorytoSearch", "*",SearchOption.AllDirectories).ToList();

【讨论】:

  • 最好将* 作为通配符而不是*.*(如果文件没有扩展名怎么办?)
  • 是的! @DmitryBychenko 这是个好主意。谢谢:)
  • Directory.GetFiles() 返回一个没有 .ToList() 选项的字符串[]。
  • @Pul_P:您可以选择第 1 行或第 2 行。 ToList() 可以对任何数组对象执行。和这里一样
  • @Mohit,缺少使用 System.Linq。谢谢。
【解决方案2】:

如果您需要将它们存储在列表中,代码如下:

 string[] entries = Directory.GetFileSystemEntries(folderPath, "*", SearchOption.AllDirectories);
List<string> filesPaths = entries.ToList();

其中“*”是搜索条件,例如,如果您只需要列出的 xml 文件,则将其更改为“*.xml”

【讨论】:

    猜你喜欢
    • 2012-11-14
    • 2012-09-02
    • 2011-03-01
    • 2017-08-10
    • 2020-08-29
    • 1970-01-01
    • 2012-02-26
    相关资源
    最近更新 更多