gpt4 book ai didi

.net - 无需处理的 XML 序列化

转载 作者:行者123 更新时间:2023-12-04 10:22:25 25 4
gpt4 key购买 nike

       using (var file_stream = File.Create("users.xml"))
{
var serializer = new XmlSerializer(typeof(PasswordManager));
serializer.Serialize(file_stream, this);
file_stream.Close();
}

使用上面的代码效果很好。但是,当我将其缩短为:
          var serializer = new XmlSerializer(typeof(PasswordManager));
serializer.Serialize(File.Create("users.xml"), this);

当我尝试在同一个测试中反序列化 users.xml 文件时,出现以下异常:
该进程无法访问文件“users.xml”,因为它正被另一个进程使用。

原因似乎是 File.Create 方法返回一个打开的 FileStream,我无法关闭它,因为我没有保留它的引用。

我的不好,还是微软的? ;-)

最佳答案

问题在于,在您的第二个示例中,您打开了一个从未处理过的文件句柄,因此第二次调用您的方法时,它将抛出您正在描述的异常。第一个片段是更可取的方式(您可以删除 file_stream.Close() 位 - Stream.Dispose() 将自动调用它)。

关于.net - 无需处理的 XML 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/875398/

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