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

我有这个循环:

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

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

在.NET 4.0中,您可以:

 dir.Attributes.HasFlag(FileAttributes.Hidden) 

将您的if语句更改为:

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

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

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

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

这段代码在VB.Net中适用于我;

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