2009-07-29 34 views
31

我試圖設置標誌,導致Read Only複選框出現,當您在文件上right click \ Properties使文件可寫在C#中的最佳方法

謝謝!

+0

你想讓文件只讀,每個問題或可寫(不是隻讀),每個問題標題? – 2009-07-29 18:19:56

+0

這是基於Win2k操作系統的複雜問題。您可以爲文件提供只讀屬性,還有通過「權限」選項卡授予的寫入權限。前者只是一個建議,後者實際上是由操作系統強制執行的。 – Armentage 2009-07-29 18:30:40

+0

@Armentage我不認爲這很複雜。文件標誌和NTFS權限集之間有明顯的區別,這個問題清楚地說明了第一種情況。 – 2009-07-30 04:46:08

回答

59

兩種方式:

System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath); 
fileInfo.IsReadOnly = true/false; 

// Careful! This will clear other file flags e.g. FileAttributes.Hidden 
File.SetAttributes(filePath, FileAttributes.ReadOnly/FileAttributes.Normal); 

上FileInfo的IsReadOnly屬性本質上是做位翻轉你就必須在第二個方法做手工。

0

C#:

File.SetAttributes(文件路徑,FileAttributes.Normal);

File.SetAttributes(filePath,FileAttributes.ReadOnly);

33

設置只讀標誌,實際上使文件不可寫:

File.SetAttributes(filePath, 
    File.GetAttributes(filePath) | FileAttributes.ReadOnly); 

刪除只讀標誌,實際上使文件可寫:

File.SetAttributes(filePath, 
    File.GetAttributes(filePath) & ~FileAttributes.ReadOnly); 

切換只讀標誌,使它的不管它是什麼,現在正好相反:

File.SetAttributes(filePath, 
    File.GetAttributes(filePath)^FileAttributes.ReadOnly); 

這基本上是掩碼有效。您設置了一個特定的位來設置只讀標誌,您可以清除它以刪除該標誌。

請注意,上述代碼不會更改文件的任何其他屬性。換句話說,如果在執行上面的代碼之前文件被隱藏了,那麼它以後也會保持隱藏狀態。如果您只是將文件屬性設置爲.Normal.ReadOnly,則最終可能會丟失進程中的其他標誌。

相關問題