XmlDocument Save保持文件打开
本文关键字:文件 Save XmlDocument | 更新日期: 2023-09-27 18:24:53
我有一个简单的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();
但对于同样的错误,这并没有什么不同。
我们非常接受你的建议。
感谢
将流发送到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()之后就没有锁了。
尝试使用解锁器(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)这也是不可复制的。