我使用DirectoryInfo.GetDirectories()
递归方式查找给定路径下的所有子目录.但是,我想排除系统文件夹,没有明确的方法.在FindFirstFile/FindNextFile中,属性更清晰.
@rslite是对的,.NET没有提供开箱即用的过滤功能,但实现起来并不难:
static IEnumerableGetNonSystemDirs(string path) { var dirs = from d in Directory.GetDirectories(path) let inf = new DirectoryInfo(d) where (inf.Attributes & FileAttributes.System) == 0 select d; foreach (var dir in dirs) { yield return dir; foreach (var subDir in GetNonSystemDirs(dir)) { yield return subDir; } } }
MSDN链接:
FileSystemInfo.Attributes属性
FileAttributes枚举