我有一个路径,我想列出它下面的子目录,其中每个子目录不包含任何其他目录。 (仅限那些不包含文件夹但仅包含文件的子目录。)
任何聪明的方法吗?
答案 0 :(得分:21)
据我了解,您希望列出仅包含文件的给定路径下的子目录。
static IEnumerable<string> GetSubdirectoriesContainingOnlyFiles(string path)
{
return from subdirectory in Directory.GetDirectories(path, "*", SearchOption.AllDirectories)
where Directory.GetDirectories(subdirectory).Length == 0
select subdirectory;
}
答案 1 :(得分:16)
DirectoryInfo dInfo = new DirectoryInfo(<path to dir>);
DirectoryInfo[] subdirs = dInfo.GetDirectories();
答案 2 :(得分:1)
您可以使用Directory.GetDirectories
方法。
但是我不确定我是否理解你的问题......你能澄清一下吗?
答案 3 :(得分:1)
基于Havard的答案,但稍微短一些(可能稍微容易阅读,因为它使用!Subdirs.Any()
代替Subdirs.Length == 0
):
static IEnumerable<string> GetSubdirectoriesContainingOnlyFiles(string path)
{
return Directory.GetDirectories(path, "*", SearchOption.AllDirectories)
.Where( subdir => !Directory.GetDirectories(subdir).Any() );
}
另请注意,这需要using System.Linq;
才能工作,因为它使用LINQ查询语言。 (当然using System.IO;
类为Directory
:))