XmlDocument Save保持文件打开

我有一个简单的c#函数,它创建一个基本的XML文件并保存:

private void CreateXMlFile(string Filename, string Name, string Company) { XmlDocument doc = new XmlDocument(); XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8", null); doc.AppendChild(docNode); XmlNode licenseNode = doc.CreateElement("license"); doc.AppendChild(licenseNode); XmlNode node = doc.CreateElement("Name"); node.AppendChild(doc.CreateTextNode(Name)); licenseNode.AppendChild(node); node = doc.CreateElement("Company"); node.AppendChild(doc.CreateTextNode(Company)); licenseNode.AppendChild(node); doc.Save(Filename); } 

当我尝试编辑或删除文件时,我总是会遇到以下错误:

该进程无法访问该文件,因为该文件正由另一个进程使用。

XmlDocument没有任何内置的dispose或close例程,并想知道如何在以后编辑或删除它之前强制关闭文件。

我试图使用StreamWriter保存文件:

 StreamWriter outStream = System.IO.File.CreateText(outfile); outStream.Write(data); outStream.Close(); 

但这并没有对同样的错误产生影响。

您的建议被大大接受。

谢谢

将Stream发送到XmlDocument的Save方法而不是文件名。

  private static void Main(string[] args) { CreateXMlFile("c:\\test.xml", "testName", "testCompany"); } private static void CreateXMlFile(string Filename, string Name, string Company) { XmlDocument doc = new XmlDocument(); XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8", null); doc.AppendChild(docNode); XmlNode licenseNode = doc.CreateElement("license"); doc.AppendChild(licenseNode); XmlNode node = doc.CreateElement("Name"); node.AppendChild(doc.CreateTextNode(Name)); licenseNode.AppendChild(node); node = doc.CreateElement("Company"); node.AppendChild(doc.CreateTextNode(Company)); licenseNode.AppendChild(node); StreamWriter outStream = System.IO.File.CreateText(Filename); doc.Save(outStream); outStream.Close(); } 

我尝试执行上面的代码,它在我的最后工作正常。

你的代码很好。 我在我的机器上测试了它,并且在Save()之后没有锁定。

尝试使用Unlocker(http://www.softpedia.com/get/System/System-Miscellaneous/Unlocker.shtml)来检查您是否真的是持有锁的人。

你使用哪个.NET框架? 还有一份报告(http://bytes.com/topic/net/answers/467028-xmldocument-save-does-not-close-file-properly)也是不可复制的。