我有一個小應用程序應該讀取用戶上傳的XML文檔。如果文件沒有合適的節點,文件將被刪除,並通知用戶。試圖刪除XML文件會拋出「進程無法訪問文件...」錯誤
但是,當我嘗試刪除它時,文件始終被鎖定,無論是在代碼中還是通過Windows資源管理器。它保持鎖定,直到我在IE中刷新頁面。
myDoc.Load(FileUpload2.FileContent);
string XMLpath = Server.MapPath(ConfigurationSettings.AppSettings["PDFLocation"]) + FileUpload2.FileName;
myDoc.Save(XMLpath);
file = new FileInfo(XMLpath);
//here I check if the file is valid. If not, delete
file.Delete(); //This is where it throws the "cannot access the file" error
錯誤的全文:
The process cannot access the file 'C:\project\files\file.xml' because it is being used by another process.
我試圖把在FileUpload2.FileContent.Dispose();
和FileUpload2.Dispose();
DELETE語句之前,但沒有運氣。
如何釋放要刪除的文件?
好的,真棒。我怎麼做? – Jimmy
@Jimmy - 你的代碼很難說,但是如果你使用[Create Method]打開XML文件(http://msdn.microsoft.com/en-us/library/system.xml.xmlreader.create.aspx ),然後使用[Close Method](http://msdn.microsoft.com/en-us/library/system.xml.xmlreader.close.aspx)。如果你只是將一個字符串傳入XMLDocument.Load方法,那麼不要。相反,使用IOStream自己打開文件並將該流傳遞給XMLDocument.Load函數。你需要一個例子嗎? – Icemanind
問題是檢查文件的代碼不是我自己的。我只是以爲這是我的錯,這不起作用。原來,問題出在該代碼中。文件流被打開了。我修補它,它像一個魅力。 – Jimmy