2012年11月19日 星期一

[C#] 修改資料夾底下所有檔案權限

進行 IO 讀寫改檔的時候很容易遇到因為有檔案權限的問題,
造成一些程式上的衝突錯誤,
這時候有沒有一個能夠自由更改檔案權限的方法就很重要了~


寫下來之後程式如下:

public void ChangeAuthorities(string destinationPath,FileAttributes fileAttributes)
        {
            // 修改檔案權限為可讀寫
            if (Directory.Exists(destinationPath))
            {
                DirectoryInfo dir = new DirectoryInfo(destinationPath);
                foreach (var file in dir.GetFiles())
                {
                    file.Attributes = fileAttributes;
                }
                foreach (var item in dir.GetDirectories())
                {
                    ChangeAuthorities(item.FullName, fileAttributes);
                }
            }
        }


這樣子就可以一次把指定的目錄以及其子目錄的權限都隨意改掉囉!
通常要讀寫是改成normal~
然後執行完需要的動坐在把權限改回原本的唯讀即可~

而有關於檔案權限屬性設定說明如下:
http://msdn.microsoft.com/zh-tw/library/system.io.fileattributes(v=vs.80).aspx
成員名稱說明
Supported by the .NET Compact Framework Archive 檔案的保存 (Archive) 狀態。應用程式使用這個屬性標記檔案來進行備份或移除。 
Supported by the .NET Compact FrameworkCompressed 檔案是壓縮過的。 
Supported by the .NET Compact FrameworkDevice 保留供將來使用。 
Supported by the .NET Compact FrameworkDirectory 檔案是一個目錄。 
Supported by the .NET Compact FrameworkEncrypted 檔案或目錄是加密過的。對檔案而言,這表示檔案中的所有資料都被加密。對於目錄而言,這表示加密 (Encryption) 是新建檔案和目錄的預設值。 
Supported by the .NET Compact FrameworkHidden 檔案是隱藏的,因此不會包括在一般目錄的清單內。 
Supported by the .NET Compact FrameworkNormal 檔案是正常的,並且沒有其他屬性設定。這個屬性只有在單獨使用時是有效的。 
Supported by the .NET Compact FrameworkNotContentIndexed 檔案不會由作業系統的內容索引服務進行索引。 
Supported by the .NET Compact FrameworkOffline 檔案是離線的。檔案資料不是直接可供使用的。 
Supported by the .NET Compact FrameworkReadOnly 檔案是唯讀的。 
Supported by the .NET Compact FrameworkReparsePoint 檔案包含重新剖析的位置,它是與檔案或目錄有關聯的使用者定義的區塊。 
Supported by the .NET Compact FrameworkSparseFile 檔案是疏鬆檔案。疏鬆檔案基本上為其資料幾乎為零值的大型檔案。 
Supported by the .NET Compact FrameworkSystem 檔案是系統檔案。檔案為作業系統的一部分,或為作業系統所專用。 
Supported by the .NET Compact FrameworkTemporary 檔案是暫時的。檔案系統嘗試將所有資料保留於記憶體以備快速存取,而非將資料清除回存於大量儲存裝置。當不再需要時,暫存檔應該由應用程式刪除。 

沒有留言:

張貼留言