在解析完成之前遇到流结束?
-
08-07-2019 - |
题
我正在尝试反序列化流,但总是收到此错误“解析完成之前遇到流结束”?
这是代码:
//Some code here
BinaryFormatter b = new BinaryFormatter();
return (myObject)b.Deserialize(s);//s---> is a Stream object that has been fill up with data some line over here
有人有想法吗?
解决方案
尝试将流的位置设置为 0,并且不使用对象,而是使用对象类型。
BinaryFormatter b = new BinaryFormatter();
s.Position = 0;
return (YourObjectType)b.Deserialize(s);
其他提示
确保序列化已完成,并且序列化类型与反序列化类型匹配(即,如果您使用 BinaryFormatter 进行反序列化,请确保使用 BinaryFormatter 进行序列化)。另外,请确保您序列化的流确实完成了序列化,使用 Stream.Flush() 或类似的方法。
我抛出了同样的异常,直到我将 [Serialized] 标签添加到我正在序列化的类中:)
然后一切都很顺利。
s.Position = 0;
这是因为你必须回到开始处才能开始复制阵列上的数据!
就我而言,我使用了:
stream.Seek(0, SeekOrigin.Begin);
在我序列化流之后,在我反序列化流之前,流工作的魅力。希望这可以帮助!
我刚刚遇到类似的错误
这是关于在序列化和反序列化时获取不同的数据类型。错误地,当将数据存储到 mariadb 时,我使用了 MediumText,而在获取数据时,我使用了 Text,这就是为什么我只获得了部分流的原因。
只需检查数据类型是否相同即可。
不隶属于 StackOverflow