我有一个应用程序可以读取用户上传的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();
,但没有运气。
如何发布文件以进行删除?
答案 0 :(得分:2)
保存后需要关闭文件。如果您的应用程序打开文件,则无法删除该文件。
答案 1 :(得分:2)
在您知道XML文件有效之前,不应将XML文件保存到磁盘。
要回答您的问题,请在省略的代码中的某个位置打开FileStream
您需要Dispose()
,最好使用using
语句。
答案 2 :(得分:1)
我不知道myDoc的类型是什么......但如果它有方法“Close
”或“Dispose
”,那么在尝试删除之前调用它...
编辑:
如果它没有这样的方法,那么myDoc = null;
可以提供帮助。
答案 3 :(得分:0)
保存文件后,您需要关闭它并刷新内存。