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

时间:2010-03-09 09:44:40

标签: c# .net

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

任何聪明的方法吗?

4 个答案:

答案 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

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 :))