2009-07-29 184 views
4

我寫在C#中,其將數據保存到XML的應用程序。當我重新打開應用程序它說文件訪問被拒絕在.NET

訪問路徑'C:\ ProgramData \ Test \ abc.xml'被拒絕。

任何一個可以請幫我理清這個問題。

有沒有辦法找到原因訪問被拒絕。

+0

你能告訴你如何寫入文件嗎? – 2009-07-29 10:15:11

回答

1

使用Unlocker知道是哪個程序鎖定該文件,並重構代碼,如果你的應用程序,你應該讀或寫

+1

我猜這會顯示出同樣的應用程序還在鎖定文件... – 2009-07-29 10:23:38

+0

是的,但他說重啓後有問題,關閉應用程序鎖定文件?當然如果它正確關閉 – 2009-07-29 10:52:35

2

後關閉文件這將是有益的,如果你目前的找出確切原因你正在使用的代碼。沒有這一點,我的猜測是你的應用程序離開處理到Filestream開放。

你應該總是處置使用Dispose模式(或使用using construct)非託管引用。

2

這是一個常見的問題我已經與XML作家的過去發現的。如果正在使用的文件流沒有正確關閉,則該文件將保持鎖定狀態。我說這是一個問題,主要是因爲我注意到由於某種原因,即使應用程序已關閉,鎖仍然存在,但我只在這種方式使用XML編寫器時纔看到它發生(不知道爲什麼呢)。

基本上,只要使用「使用」的關鍵字,以確保您的作家是正確關閉。代碼應該看起來像這樣:

using(XmlWriter _myXmlWriter = XmlWriter.Create(outputStream, xmlWriterSettings)) 
{ 
    //Build XML here 
} 
4

您可能會收到此錯誤,因爲您正在運行Vista或Win7並且您已打開UAC。

C:\ ProgramData需要管理員指定要寫入(但不能讀取)。

我剛剛發現了這個困難的方式,因爲我一直在研究一個在XP上運行良好的程序,該程序使用了System.Environment.SpecialFolder.CommonApplicationData,它在Vista中指向上述位置,並且需要提升的privs才能寫入到那個目錄。