【问题标题】:Hidden folders C# [duplicate]隐藏文件夹 C# [重复]
【发布时间】:2010-11-09 12:19:07
【问题描述】:

可能重复:
C# - Get a list of files excluding those that are hidden

如何确保只获取未隐藏的文件夹?

这是我所知道的,但它会返回所有文件夹。

string[] folders = Directory.GetDirectories(path);

【问题讨论】:

  • 对目录属性进行相同类型的检查应该在这里工作。
  • 原理一模一样。只需将第 2 行更改为“GetDirectories”即可。
  • @Profeten 我知道,但同样的原则适用于您检查 FileAttributes 属性是否为 Hidden

标签: c#


【解决方案1】:

您可以使用DirectoryInfo 来检查文件夹是否被隐藏:

string[] folders = Directory.GetDirectories(path);
foreach (string subFolder in folders) {
 string folder = Path.Combine(path, subFolder);
 DirectoryInfo info = new DirectoryInfo(folder);
 if ((info.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden) {
  // do something with your non-hidden folder here
 }
}

另一种解决方案是以下单行:

var folders = new DirectoryInfo(path).GetDirectories().Where(x => (x.Attributes & FileAttributes.Hidden) == 0);

在这种情况下,foldersIEnumberable<DirectoryInfo>。 如果您想要文件而不是目录,只需将 GetDirectories 替换为 GetFiles。

【讨论】:

    【解决方案2】:

    您需要循环目录并检查该目录或文件的 (attrib utes)。

    例子:

    foreach (DirectoryInfo Dir in Directory.GetDirectories(path))
    {
        if (!Dir.Attributes.HasFlag(FileAttributes.Hidden))
        {
            //Add to List<DirectoryInfo>
        }
    }
    

    【讨论】:

      【解决方案3】:

      类似

      var dirs = Directory.GetDirectories("C:").Select(dir => new DirectoryInfo(dir))
          .Where(dirInfo => (!dirInfo.Attributes.HasFlag(FileAttributes.Hidden)));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-06
        • 2015-04-06
        • 2018-06-08
        • 1970-01-01
        • 2013-03-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多