【问题标题】:System.IO.GetFiles doesn't return files in subfolders even if i use SearchOption.AllDirectories即使我使用 SearchOption.AllDirectories,System.IO.GetFiles 也不会返回子文件夹中的文件
【发布时间】:2014-07-03 10:05:21
【问题描述】:

在我的代码中,我使用GetFiles()-method 来计算给定文件夹中的文件数

让我们假设以下文件夹结构:

 FolderA 
          File1
          File2
          File3
          FolderB
                    File4
                    File5
          FolderC
                    File9
                    File10
                    FolderD
                            File6
                            File7
                    FolderE
                            File8

要确定文件计数,我使用以下代码:

Dim filename as String = 'Path to my FolderA: C:/....../Desktop/FolderA
Dim myFileCount as Integer = 0
myFileCount = Directory.GetFiles(filename, "*.*", SearchOption.AllDirectories).Length

Result: MyfileCount is 3 instead of 10

执行此代码时,不包括FolderB & FolderC 的内容。在MSDN-Library - GetFiles()MSDN-Library - SearchOption 之后,这应该可以工作.....

我做错了什么?

【问题讨论】:

  • 我在我的环境中尝试了你的代码..它对我有用
  • 子文件夹中的文件是否可能没有扩展名?您的模式是 "*.*",因此只有名称中带有点的文件才会匹配。
  • 这里相同;该代码对我来说很好。您是否有权访问 FolderB 和 FolderC?
  • 所有文件的扩展名都是 .txt 或 .docx。权利不是问题(刚刚检查)。我拥有文件夹所需的所有权限。
  • @MicroVirus 你是对的!此代码是嵌入 Explorer.exe 的应用程序的一部分。显然,当我构建用户时,有时会从我的用户切换到“系统”用户(这大约每 10 个构建发生一次)。此用户(系统)对该文件夹没有权限。现在我只需要搜索用户切换背后的原因(这在它自己的术语中很奇怪)。感谢您的帮助!

标签: vb.net .net getfiles


【解决方案1】:

试试:

Directory.GetFiles(filename,"*.*",SearchOption.SearchAllSubDirectories).Length

【讨论】:

  • 相同的 Sarchoption,只有不同的命名空间:“SearchAllSubDirectories”来自 Microsoft.Visualbasic.FileIO。 “SearchOption.AllDirectories”来自“System.IO”。正如我在 cmets 中提到的,非例外 Windows 用户切换失败的原因。
猜你喜欢
  • 2013-12-25
  • 2020-06-08
  • 2012-12-26
  • 1970-01-01
  • 2019-10-13
  • 1970-01-01
  • 2016-11-03
  • 1970-01-01
  • 2019-08-08
相关资源
最近更新 更多