获取仅包含文件的所有子目录

我有一个路径,我想列出它下面的子目录,其中每个子目录不包含任何其他目录。 (仅限那些不包含文件夹但仅包含文件的子目录。)

有任何聪明的方法吗?

我的理解是,您希望列出仅包含文件的给定路径下的子目录。


static IEnumerable GetSubdirectoriesContainingOnlyFiles(string path) { return from subdirectory in Directory.GetDirectories(path, "*", SearchOption.AllDirectories) where Directory.GetDirectories(subdirectory).Length == 0 select subdirectory; } 

的DirectoryInfo

 DirectoryInfo dInfo = new DirectoryInfo(); DirectoryInfo[] subdirs = dInfo.GetDirectories(); 

您可以使用Directory.GetDirectories方法。

但是我不确定我是否理解你的问题……你能澄清一下吗?

基于Havard的答案,但稍微短一点(也许稍微容易阅读,因为它使用!Subdirs.Any()而不是Subdirs.Length == 0 ):

 static IEnumerable GetSubdirectoriesContainingOnlyFiles(string path) { return Directory.GetDirectories(path, "*", SearchOption.AllDirectories) .Where( subdir => !Directory.GetDirectories(subdir).Any() ); } 

另请注意,这需要using System.Linq; 工作,因为它使用LINQ查询语言。 (当然using System.IO;对于Directory类:))