我有这个循环:
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)
| 归档时间: |
|
| 查看次数: |
14939 次 |
| 最近记录: |