当前位置:  开发笔记 > 编程语言 > 正文

如何在C#.NET中替换现有XML文件的内容?

如何解决《如何在C#.NET中替换现有XML文件的内容?》经验,为你挑选了1个好方法。

尝试使用如下代码段替换C#.NET中的XML文件的内容时:

string file = Path.GetTempFileName(); // pretend this is a real file
string tmpFile = Path.GetTempFileName();

using (var writer = XmlWriter.Create(File.Create(tmpFile)))
{
    writer.WriteStartElement("root");
    for (int i = 0; i < 100; i++)
    {
        writer.WriteElementString("test", null, 
            "All work and no play makes Jack a dull boy");
    }
    writer.WriteEndElement();
}

File.Delete(file);
File.Move(tmpFile, file);

...我收到一个System.IO.IOException,声称该文件已被另一个进程打开.



1> Christoffer ..:

由于某种原因,XmlWriter类显然没有为临时文件配置底层流.将流放在其自己的"using"子句中可确保正确关闭流.将代码更改为

string file = Path.GetTempFileName(); // pretend this is a real file
string tmpFile = Path.GetTempFileName();

using (var stream = File.Create(tmpFile))
using (var writer = XmlWriter.Create(stream))
{
    writer.WriteStartElement("root");
    for (int i = 0; i < 100; i++)
    {
        writer.WriteElementString("test", null, 
            "All work and no play makes Jack a dull boy");
    }
    writer.WriteEndElement();
}                
File.Delete(file);
File.Move(tmpFile,file);

...使IOException消失,它按预期工作.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有