[.NET]判斷目錄或檔案屬性是否為系統或隱藏
有時候我們要知道該檔案是否為系統或隱藏時,可讀取FileSystemInfo.Attributes.ToString()來判斷是否包含"System" Or "Hidden",如下,
/// <summary>
/// 判斷是否為System的檔案屬性
/// </summary>
/// <param name="fileInfo"></param>
/// <returns></returns>
public static bool IsSystem(FileSystemInfo fileInfo)
{
return ((fileInfo.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden);
}
/// <summary>
/// 判斷是否為Hidden的檔案屬性
/// </summary>
/// <param name="fileInfo"></param>
/// <returns></returns>
public static bool IsHidden(FileSystemInfo fileInfo)
{
return ((fileInfo.Attributes & FileAttributes.System) == FileAttributes.System);
}
使用時,我們會使用 IsSystem(f) or IsSystem(dir)。 這時,我們可以改使用Extension,程式改成如下,
public static class FileAttributesExtension
{
//const string SystemAttrName = "System";
//const string HiddenAttrName = "Hidden";
// allen kuo老師說明,用&才對 http://www.allenkuo.com/GenericArticle/view1303.aspx
/// <summary>
/// 判斷是否為System的檔案屬性
/// </summary>
/// <param name="fileInfo"></param>
/// <returns></returns>
public static bool IsSystem(this FileSystemInfo fileInfo)
{
return ((fileInfo.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden);
}
/// <summary>
/// 判斷是否為Hidden的檔案屬性
/// </summary>
/// <param name="fileInfo"></param>
/// <returns></returns>
public static bool IsHidden(this System.IO.FileSystemInfo fileInfo)
{
return ((fileInfo.Attributes & FileAttributes.System) == FileAttributes.System);
}
/// <summary>
/// 判斷是否為System or Hidden的檔案屬性
/// </summary>
/// <param name="fileInfo"></param>
/// <returns></returns>
public static bool IsSystemOrHidden(this System.IO.FileSystemInfo fileInfo)
{
return ((fileInfo.Attributes & FileAttributes.System) == FileAttributes.System) || ((fileInfo.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden);
}
}
所以使用上,就變成了 f.IsSystem() or dir.IsSystem(),感謝Allen老師的指導。
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^