C#查找没有系统和隐藏文件夹的目录

时间:2019-01-09 06:52:52

标签: c# directoryinfo

我想获得列表中的所有目录,而驱动器上没有系统和隐藏的标记文件夹。

示例:

var Dizinler = Directory.EnumerateDirectories("C:\")
               .Select(s => new DirectoryInfo(s))
               .Where(s => !s.Attributes.HasFlag(FileAttributes.Directory | FileAttributes.System | FileAttributes.Hidden) )
               .Select(s=> s.FullName).ToArray();

但是,返回的结果仍然包含隐藏文件夹和系统文件夹。

2 个答案:

答案 0 :(得分:1)

似乎,您不应该合并所有属性:

var Dizinler = Directory.EnumerateDirectories("C:\")
           .Select(s => new DirectoryInfo(s))
           .Where(s => s.Attributes.HasFlag(FileAttributes.Directory))
           .Where(s => !s.Attributes.HasFlag(FileAttributes.System))
           .Where(s => !s.Attributes.HasFlag(FileAttributes.Hidden))
           .Select(s=> s.FullName).ToArray();

答案 1 :(得分:0)

问题是|。这样做:

    var Dizinler = Directory.EnumerateDirectories("C:\")
.Select(s => new DirectoryInfo(s)).Where(s => s.Attributes.HasFlag(FileAttributes.Directory) &&
    !s.Attributes.HasFlag(FileAttributes.System) && !s.Attributes.HasFlag(FileAttributes.Hidden) )
.Select(s=> s.FullName).ToArray();