gpt4 book ai didi

c# - XmlDocument 保存使文件保持打开状态

转载 作者:可可西里 更新时间:2023-11-01 09:10:20 27 4
gpt4 key购买 nike

我有一个简单的 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);
}

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

The process cannot access the file because it is being used by another process.

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

我尝试使用 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();
}

我尝试执行上面的代码,它在我这边运行良好。

关于c# - XmlDocument 保存使文件保持打开状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9326618/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com