2011-11-10 126 views
16

如果File.SetAttributes("C:\\myFile.txt", FileAttributes.ReadOnly);將文件設置爲只讀,如果需要,如何將其設置爲讀取/寫入?C#make文件從只讀中讀取

我懷疑它會是FileAttributes.Normal但是這是否會改變文件的任何其他屬性?在MSDN網站上沒有非常詳細的說明...

該文件是正常的,沒有其他屬性設置。此屬性爲 僅在單獨使用時纔有效。

感謝

回答

36

要刪除只是ReadOnly屬性,你會做這樣的事情:

File.SetAttributes("C:\\myfile.txt", File.GetAttributes("C:\\myfile.txt") & ~FileAttributes.ReadOnly); 

這將刪除ReadOnly屬性,但保留已經對存在的任何其他屬性文件。

+0

我猜'''顛倒了屬性? –

+2

非常多 - '〜'運算符返回給定值的按位補碼。從語義上講,上面說的是,「除了ReadOnly屬性*之外,將文件'myfile.txt'的屬性設置爲'myfile.txt' *的屬性。」 – matt

+0

確定輝煌! :)謝謝 –

8

File.SetAttributes替換文件上的所有屬性。

設置和刪除屬性的正確方法是首先獲取屬性,應用更改並設置它們。

例如

var attr = File.GetAttributes(path); 

// set read-only 
attr = attr | FileAttributes.ReadOnly; 
File.SetAttributes(attr); 

// unset read-only 
attr = attr & ~FileAttributes.ReadOnly; 
File.SetAttributes(attr);