Serialization.Runtime.Exception:在完成分析之前遇到流结束
几乎一个星期以来,我一直在努力解决代码中的一个问题! 我想通过将流数据划分为较小的流数据来反序列化流数据(大小为400MB)。当我尝试这样做时,我得到了序列化异常:解析完成之前遇到的流结束。 以下是我的步骤: 1.读取字节数组数据中的流数据 2.将字节数组数据划分为较小的字节数组数据 3.将较小的字节数组转换为较小的流 4.反序列化每个较小的流数据并合并输出 在反序列化之前,我打印出了流数据的位置,它是0。 请让我知道在解决我的代码!非常感谢。 我的C#代码: 在这里输入代码Serialization.Runtime.Exception:在完成分析之前遇到流结束,serialization,Serialization,几乎一个星期以来,我一直在努力解决代码中的一个问题! 我想通过将流数据划分为较小的流数据来反序列化流数据(大小为400MB)。当我尝试这样做时,我得到了序列化异常:解析完成之前遇到的流结束。 以下是我的步骤: 1.读取字节数组数据中的流数据 2.将字节数组数据划分为较小的字节数组数据 3.将较小的字节数组转换为较小的流 4.反序列化每个较小的流数据并合并输出 在反序列化之前,我打印出了流数据的位置,它是0。 请让我知道在解决我的代码!非常感谢。 我的C#代码: 在这里输入代码 public st
public static T DeserializeBuffer<T>(Stream A)
{
List<Pulse> output = new List<Pulse>();//// Pulse is a class. I am deserializing the stream data as an object of Pulse.
byte[] bufferdata1 = new byte[4096]; /// 4 KB size data.
int t1 = A.Read(bufferdata1, 0, bufferdata1.Length); //// reading data into bufferdata1
Stream s1 = new MemoryStream(bufferdata1); /// smaller size stream data s1
Console.WriteLine(s1.Position); /// position of stream s1
BinaryFormatter bf = new BinaryFormatter();
return(T)bf.Deserialize(s1); //// deserialization of s1
}
publicstatict反序列化缓冲区(流A)
{
List output=new List();///Pulse是一个类。我正在将流数据反序列化为Pulse的对象。
byte[]bufferdata1=新字节[4096];///4 KB大小的数据。
int t1=A.Read(bufferdata1,0,bufferdata1.Length);///将数据读入bufferdata1
流s1=新的MemoryStream(bufferdata1);///较小大小的流数据s1
Console.WriteLine(s1.Position);///流s1的位置
BinaryFormatter bf=新的BinaryFormatter();
返回(T)bf.反序列化(s1);///s1的反序列化
}
你不能像那样分割数据流。在您的400MB内存中,没有办法分辨出位置—边界在表示单个对象的字节之间。因此,如果在任意位置切碎400MByte,几乎肯定是将一个对象的字节分布在两个较小的流之间。因此有例外。唯一要做的事情是让生成400MB的任何东西将Pulse
s的批序列化为单独的数据文件,然后可以单独反序列化。谢谢你!为了批量处理脉冲文件,我们不需要知道不同脉冲数据在流数据中的位置吗?