我是一个新手,并且已经看到 System.IO 可以提供我需要的东西,但我不知道如何解决。我正在使用VB.net
从给定的文件夹开始,例如C:\StartHere我想向下递归文件夹层次结构,查找包含具有给定扩展名的文件的任何文件夹,例如 * .exe。我想建立这些文件夹的列表以供后续处理。
如果有人可以提供帮助,我将不胜感激,因为我不知道解决此问题的最佳方法。
更新
以下提供了 Andrew Morton 要求的更多详细信息。从指定的文件夹开始,我想获取一个列表,其中包含所有包含 EXE 的子文件夹的完整路径。因此呈现以下文件夹...</p>
C:\StartHere\folderA (contains some EXEs)
C:\StartHere\folderB (none in here)
C:\StartHere\Deeper\DeepC (contains some EXEs)
C:\StartHere\Deeper\DeepD (contains some EXEs)
C:\StartHere\Deeper\DeepE (none in here)
C:\StartHere\Deeper\DeepF (contains some EXEs)
该代码将生成一个列表,其中包含:
C:\StartHere\folderA
C:\StartHere\Deeper\DeepC
C:\StartHere\Deeper\DeepD
C:\StartHere\Deeper\DeepF
在@Tim Schmelter、@Jimi 和@Andrew Morton 的大力帮助下,我现在得到的代码是这样的:
Dim folderList = Directory.EnumerateDirectories("C:\StartHere", "*", SearchOption.AllDirectories).Where(Function(d) Directory.EnumerateFiles(d, "*.exe").Any()).Select(Function(f) Path.GetDirectoryName(f))
运行时,它会创建以下列表;因此它找到了正确的文件夹,但将其父文件夹添加到列表中,而不是完整路径:
C:\StartHere
C:\StartHere\Deeper
C:\StartHere\Deeper
C:\StartHere\Deeper