說明:
我們來進行修改檔案的屬性為非唯讀、唯讀檔,如下圖,紅色部分為勾選唯讀或非唯讀檔案。
唯讀檔案通常不可被程式讀取、寫入,所以我們可以透過程式碼,將檔案屬性為唯讀改成非唯讀,以便程式對此檔案讀取、寫入。
首先設定檔案路徑。
C#的檔案讀取、寫入的路徑指定方式有兩種:
絕對路徑:
1.是使用兩個斜線,例如 "C:\\Test.xls"
2.在路徑前加上@符號,以及使用一個斜線,例如 @"C:\Test.xls"
相對路徑:
"~/Download/Test.xls"
來看一下程式碼,首先設定檔案讀取路徑
string strPath = "C:\\Test.xls";
//new一個檔案屬性
System.IO.FileInfo batchItemAttribute = new FileInfo(strPath);
//設定檔案屬性為非唯讀
batchItemAttribute.Attributes = FileAttributes.Normal;
//設定檔案屬性為唯讀
batchItemAttribute.Attributes = FileAttributes.ReadOnly;
結論:
由於這會在TFS版本控管時遇到的!通常TFS版本控管會將檔案預設為唯讀檔,導致我們有意讀取、寫入時,會發生讀取不到、無法寫入的莫名事件,修改檔案屬性是一個有效的解決方法。
針對類似的問產生,可參考此篇“TFS 版本控管時會將檔案設為唯讀,需注意 File.Open 的使用”
http://blog.miniasp.com/post/2011/04/07/Open-a-ReadOnly-file-will-cause-UnauthorizedAccessException-in-TFS-project.aspx