【问题标题】:How to loop through all the files in a directory in c # .net?如何遍历c#.net目录中的所有文件?
【发布时间】:2010-11-23 09:10:11
【问题描述】:

我想获取文件夹及其子文件夹中的文件。以下代码无法获取其子文件夹中的文件:

string[] files = Directory.GetFiles(txtFolderPath.Text, "*ProfileHandler.cs");

谁能告诉我如何在 c# .net 中实现这个?

【问题讨论】:

  • 我一直更喜欢 MSDN 做事的方法。在this link 的底部,他们提供了一个带有控制台程序(C#)的递归示例。
  • @Panuvin - 注意:MSDN 代码有点危险。对于非常大的文件夹和子文件夹内容(很多很多文件),您可以获得 StackOverflow 异常(因为递归代码)

标签: c# .net


【解决方案1】:
string[] files = 
    Directory.GetFiles(txtPath.Text, "*ProfileHandler.cs", SearchOption.AllDirectories);

最后一个参数会影响您所指的内容。将每个文件(包括子文件夹)设置为 AllDirectories,如果您只想在给定目录中搜​​索而不是子文件夹,则将其设置为 TopDirectoryOnly

详情请参考MDSN:https://msdn.microsoft.com/en-us/library/ms143316(v=vs.110).aspx

【讨论】:

  • 如果您的文件夹结构中有循环,这将无限循环。见msdn.microsoft.com/en-us/library/ms143448.aspx
  • 中间参数的作用是什么?
  • 它被称为searchPattern,它是一个过滤器,用来选择文件。在这种情况下,它将选择所有以“ProfileHandler.cs”结尾的文件。看看MDSN
【解决方案2】:

试试下面的代码

Directory.GetFiles(txtFolderPath.Text, "*ProfileHandler.cs",SearchOption.AllDirectories)

【讨论】:

    【解决方案3】:

    您可以查看显示 Deep Folder Copy 的此页面,它使用递归方式遍历文件并提供一些非常好的技巧,例如过滤技术等。

    http://www.codeproject.com/Tips/512208/Folder-Directory-Deep-Copy-including-sub-directori

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-05
      • 1970-01-01
      • 2016-08-01
      • 2018-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-17
      相关资源
      最近更新 更多