C# 试图删除一个XML文件时抛出;进程无法访问该文件…”;错误
我有一个小应用程序,可以读取用户上传的XML文档。如果文件没有正确的节点,则会删除该文件并通知用户 但是,无论是在代码中还是通过windows资源管理器,当我尝试删除该文件时,该文件始终被锁定。在我刷新IE中的页面之前,它一直处于锁定状态C# 试图删除一个XML文件时抛出;进程无法访问该文件…”;错误,c#,asp.net,xml,delete-file,C#,Asp.net,Xml,Delete File,我有一个小应用程序,可以读取用户上传的XML文档。如果文件没有正确的节点,则会删除该文件并通知用户 但是,无论是在代码中还是通过windows资源管理器,当我尝试删除该文件时,该文件始终被锁定。在我刷新IE中的页面之前,它一直处于锁定状态 myDoc.Load(FileUpload2.FileContent); string XMLpath = Server.MapPath(ConfigurationSettings.AppSettings["PDFLocation"]) + FileUploa
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语句之前,但没有运气
如何释放要删除的文件?保存后需要关闭文件。如果应用程序打开了该文件,则无法删除该文件。保存后需要关闭该文件。如果应用程序已打开该文件,则无法将其删除。在知道该XML文件有效之前,不应将其保存到磁盘
为了回答您的问题,您在省略的代码中留下了一个打开的FileStream
。
您需要Dispose()
为了回答您的问题,您在省略的代码中留下了一个打开的FileStream
。
你需要Dispose()
它,最好使用using
语句。保存你的文件后,你需要关闭它并刷新内存。保存你的文件后,你需要关闭它并刷新内存。我不知道myDoc是什么类型的。。。但是如果它有一个方法“Close
”或“Dispose
”,则在尝试删除之前调用该方法
编辑:
如果没有这样的方法,那么myDoc=null代码>可能会有帮助。我不知道myDoc是什么类型的。。。但是如果它有一个方法“Close
”或“Dispose
”,则在尝试删除之前调用该方法
编辑:
如果没有这样的方法,那么myDoc=null代码>可能会有帮助。好的,太棒了。我该怎么做?@Jimmy-很难从代码中看出,但是如果您使用打开XML文件,那么只需使用。如果您只是将一个字符串传递到XMLDocument.Load方法中,那么不要这样做。相反,您可以使用IOStream自己打开文件,并将该流传递给XMLDocument.Load函数。你需要一个例子吗?问题是检查文件的代码不是我自己的。我只是认为这不起作用是我的错。事实证明,问题出在这段代码中。有一个文件流没有打开。我把它修好了,它就像一个符咒。好的,太棒了。我该怎么做?@Jimmy-很难从代码中看出,但是如果您使用打开XML文件,那么只需使用。如果您只是将一个字符串传递到XMLDocument.Load方法中,那么不要这样做。相反,您可以使用IOStream自己打开文件,并将该流传递给XMLDocument.Load函数。你需要一个例子吗?问题是检查文件的代码不是我自己的。我只是认为这不起作用是我的错。事实证明,问题出在这段代码中。有一个文件流没有打开。我把它修好了,效果很好。