我有一个将自定义类的实例保存到文件的方法。有一次我注意到我的应用程序无法启动,因为此文件填充了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);
}
}
答案 0 :(得分:0)
使用这样的东西会不会更简单?
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
文件即可查看文件内容。