我有這樣的循環:如何測試目錄是否隱藏在C#中?
foreach (DirectoryInfo dir in downloadedMessageInfo.GetDirectories())
{
if (dir.Attributes != FileAttributes.Hidden)
{
dir.Delete(true);
}
}
我該如何正確跳過所有隱藏目錄?
我有這樣的循環:如何測試目錄是否隱藏在C#中?
foreach (DirectoryInfo dir in downloadedMessageInfo.GetDirectories())
{
if (dir.Attributes != FileAttributes.Hidden)
{
dir.Delete(true);
}
}
我該如何正確跳過所有隱藏目錄?
在.NET 4.0中,你可以這樣做:
dir.Attributes.HasFlag(FileAttributes.Hidden)
Attributes
是Flags
值,所以你需要檢查它是否包含FileAttributes.Hidden
使用按位比較,像這樣:
if ((dir.Attributes & FileAttributes.Hidden) == 0)
唯一的問題是,當我嘗試評價上面,它仍然通過傳球......即使目錄中真隱 – 2009-08-17 16:29:49
對不起,還以爲你看_for_隱藏目錄,不排除他們。修正上面的代碼。 – bdukes 2009-08-17 17:07:04
更改您的if語句:
if ((dir.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden)
您需要因爲屬性是一個標誌枚舉,所以使用位掩碼。它可以有多個值,所以隱藏的文件夾可能被隱藏而另一個標誌。上面的語法將正確地檢查這個。
此代碼對我的作品在VB.Net;
If (dir.Attributes.Tostring.Contains("Hidden") Then
' File is hidden
Else
' File is not hidden
EndIf
HasFlags()方法是.NET 4的一個新增功能。它比舊的按位比較更易於使用。 – dthrasher 2010-10-12 20:55:35