XmlSerializer和MemoryStream可以返回一个0值字节的数组吗?

时间:2016-09-12 12:36:30

标签: c# .net file xmlserializer memorystream

我有一个将自定义类的实例保存到文件的方法。有一次我注意到我的应用程序无法启动,因为此文件填充了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);
        }
    }

1 个答案:

答案 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文件即可查看文件内容。