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

C# Find Directories Without System and Hidden Folder

我想获取一个列表中的所有目录,不带系统和驱动器上的隐藏标记文件夹。

示例:

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();

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

看来,你不应该合并所有属性:

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();

问题是|。这样做:

    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();