2011-04-13 74 views
2

這是我的代碼如何修改C#中沒有擴展名的文件的屬性?

static string pat = "C:\\" + System.Environment.UserName + 
       "\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\History"; 
FileInfo hist = new FileInfo(pat); 

這裏History是一個文件,沒有擴展名。 所有我想做的事是這樣的:

hist.IsReadOnly = true; 

directorynotfoundexception來。請幫助我,我如何訪問文件,它認爲History是一個目錄!

+0

當你運行'目錄您能得到什麼「C:\用戶名\ AppData的\本地\谷歌\鍍鉻\用戶數據\ DEFAULT \歷史」'(與您的用戶名替補' UserName')? – Gabe 2011-04-13 11:42:26

+1

您是否缺少路徑開頭的「用戶」文件夾? 「C:\\ USERS」+ System.Environment.UserName +「\\ AppData \\」 – 2011-04-13 11:45:16

+0

我愛你惡魔!我是個白癡!真傻!非常感謝!! – rainshark 2011-04-13 11:47:49

回答

5

你的路線很奇怪。它開始像「C:\用戶名\ AppData ...」。

我想你在找什麼是這樣的:

string path = System.Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); 
path = System.IO.Path.Combine(path, "Google\\Chrome\\User Data\\Default\\History"); 

結果會是這樣的(在XP):

C:\ Documents和 Settings \用戶名\當地 設置\應用 數據\谷歌\鍍鉻\用戶 數據\ DEFAULT \歷史

Windows 7會給你不同的結果。

這對於文件帶或不帶擴展名的工作:

FileInfo fi = new FileInfo(path); 
fi.Attributes |= System.IO.FileAttributes.ReadOnly; 

這已爲目錄工作:

DirectoryInfo di = new DirectoryInfo(path); 
di.Attributes |= System.IO.FileAttributes.ReadOnly; 
+0

對不起,它不起作用!它認爲這是一個目錄!同樣的例外:( – rainshark 2011-04-13 11:45:06

+1

@Ravi Shankar:我編輯了我的答案,看一看。 – HABJAN 2011-04-13 11:48:05

+0

謝謝HABJAN,但我得到了錯誤 - 應該是「C:\ Users \ ...」而不是「C:\ ..」。 ..「。我是新手,請原諒我。謝謝你的時間! – rainshark 2011-04-13 12:02:36

1

我覺得你的目錄是錯誤的,你似乎缺少'用戶'文件夾。它應該是:

static string pat = "C:\\Users\\" + System.Environment.UserName + ...