XmlSerializer和MemoryStream可以返回0值字节的数组吗?
本文关键字:字节 数组 MemoryStream 返回 XmlSerializer | 更新日期: 2023-09-27 18:06:34
我有一个方法可以将自定义类的实例保存到文件中。有一次我注意到我的应用程序无法启动,因为这个文件充满了0值字节(空字符)。这种情况以前从未发生过,它似乎运行得很好。有人发现这段代码有什么奇怪的地方吗?可能导致序列化器或内存流返回一个零值数组的东西?或者我应该怀疑这是另一个应用程序的工作?
private readonly XmlSerializer _serializer = new XmlSerializer(typeof(MySettings));
public void Save(MySettings config)
{
using (var stream = new MemoryStream())
{
_serializer.Serialize(stream, config);
byte[] binaryConfig = stream.ToArray();
File.WriteAllBytes(_configFilePath, binaryConfig);
}
}
使用这样的东西不是更简单吗?
XmlSerializer x = new XmlSerializer(typeof(MySettings));
using (FileStream stream = new FileStream(_configFilePath, FileMode.Create, FileAccess.Write))
{
x.Serialize(stream, config);
stream.Close();
}
XML
文件不应该包含任何0字节或nul
字符,因为您的对象在序列化期间被转换为XML
文本。您可以简单地使用文本编辑器打开XML
文件来查看文件内容。