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

时间:2009-08-17 16:22:10

标签: c# .net

我有这个循环:

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

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

4 个答案:

答案 0 :(得分:36)

将您的if语句更改为:

if ((dir.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden)

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

答案 1 :(得分:32)

在.NET 4.0中,您可以这样做:

dir.Attributes.HasFlag(FileAttributes.Hidden)

答案 2 :(得分:15)

AttributesFlags值,因此您需要使用按位比较检查它是否包含FileAttributes.Hidden,如下所示:

if ((dir.Attributes & FileAttributes.Hidden) == 0)

答案 3 :(得分:2)

此代码适用于VB.Net;

If (dir.Attributes.Tostring.Contains("Hidden") Then
    ' File is hidden
Else
    ' File is not hidden
EndIf