[.NET]判斷目錄或檔案屬性是否為系統或隱藏

[.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:從零開始的軟體開發生活

請大家繼續支持 ^_^