【问题标题】:Before completing the analysis was detected ending stream在完成分析之前检测到结束流
【发布时间】:2016-12-02 21:07:10
【问题描述】:

又是我,我还有另一个问题。在某处,我发现了以下代码:

private T DeepDeserialize<T>(string fileName)
    {
        T returnValue;
        using (FileStream str = new FileStream(fileName, FileMode.Open))
        {
            BinaryFormatter binaryFormatter = new BinaryFormatter();
            returnValue = (T)binaryFormatter.Deserialize(str);
        }
        return returnValue;
    }

我今天和现在修改了一些类,它总是抛出一个错误,可以这样翻译:Before completing the analysis was detected ending stream(我不知道正确的翻译,错误信息是我的语言,而不是英语)

我尝试在using 的这两行之间插入str.Position = 0;,这是我在这里某处找到的,但没有帮助。

有人可以帮我让它再次工作吗?我不知道该怎么办...

【问题讨论】:

  • 如果你修改了你的类,你不能再从旧文件反序列化它们,你必须先序列化它们
  • 哦,谢谢!我忘了重新制作我的文件 :-) 多么愚蠢的错误,对吧?再次感谢。我可以请您再次发布此帖子作为此帖子的答案,以便我可以将其标记为答案吗? :-)
  • 当然,有一些限制,我必须等待几分钟才能接受

标签: c# binary-serialization binary-deserialization


【解决方案1】:

您已更改文件的二进制布局,但很可能试图反序列化旧文件。这是行不通的。您必须先序列化新版本。

附:如果您在早期阶段考虑版本控制和自定义格式化程序,您可能能够使用新类反序列化旧数据,具体取决于您的更改有多大

【讨论】:

    猜你喜欢
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多