如何测试目录是否隐藏在C#中?

JL.*_*JL. 26 .net c#

我有这个循环:

  foreach (DirectoryInfo dir in downloadedMessageInfo.GetDirectories())
        {
            if (dir.Attributes != FileAttributes.Hidden)
            {
                dir.Delete(true);
            }
        }
Run Code Online (Sandbox Code Playgroud)

如何正确跳过所有隐藏目录?

Ree*_*sey 37

将您的if语句更改为:

if ((dir.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden)
Run Code Online (Sandbox Code Playgroud)

您需要使用位掩码,因为Attributes是一个标志枚举.它可以有多个值,因此可以隐藏隐藏文件夹和另一个标志.上面的语法将正确检查.


小智 33

在.NET 4.0中,您可以:

dir.Attributes.HasFlag(FileAttributes.Hidden)
Run Code Online (Sandbox Code Playgroud)


bdu*_*kes 16

Attributes是一个Flags值,所以你需要检查它是否包含FileAttributes.Hidden使用按位比较,如下所示:

if ((dir.Attributes & FileAttributes.Hidden) == 0)
Run Code Online (Sandbox Code Playgroud)