【问题标题】:C# Find Directories Without System and Hidden FolderC# 查找没有系统和隐藏文件夹的目录
【发布时间】:2019-01-09 06:52:52
【问题描述】:

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

例子:

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

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

【问题讨论】:

  • !s.Attributes.HasFlag(FileAttributes.Directory | FileAttributes.System | FileAttributes.Hidden) 表示“不是目录和系统以及隐藏属性结合”;因此,如果目录是隐藏的,但不是系统的,它会通过过滤器

标签: c# directoryinfo


【解决方案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();

【讨论】:

    【解决方案2】:

    问题是|。这样做:

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

    【讨论】:

      猜你喜欢
      • 2021-08-26
      • 1970-01-01
      • 2011-10-12
      • 2021-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多