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和MemoryStream可以返回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文件来查看文件内容。