Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Serialization.Runtime.Exception:在完成分析之前遇到流结束_Serialization - Fatal编程技术网

Serialization.Runtime.Exception:在完成分析之前遇到流结束

Serialization.Runtime.Exception:在完成分析之前遇到流结束,serialization,Serialization,几乎一个星期以来,我一直在努力解决代码中的一个问题! 我想通过将流数据划分为较小的流数据来反序列化流数据(大小为400MB)。当我尝试这样做时,我得到了序列化异常:解析完成之前遇到的流结束。 以下是我的步骤: 1.读取字节数组数据中的流数据 2.将字节数组数据划分为较小的字节数组数据 3.将较小的字节数组转换为较小的流 4.反序列化每个较小的流数据并合并输出 在反序列化之前,我打印出了流数据的位置,它是0。 请让我知道在解决我的代码!非常感谢。 我的C#代码: 在这里输入代码 public st

几乎一个星期以来,我一直在努力解决代码中的一个问题! 我想通过将流数据划分为较小的流数据来反序列化流数据(大小为400MB)。当我尝试这样做时,我得到了序列化异常:解析完成之前遇到的流结束。 以下是我的步骤: 1.读取字节数组数据中的流数据 2.将字节数组数据划分为较小的字节数组数据 3.将较小的字节数组转换为较小的流 4.反序列化每个较小的流数据并合并输出

在反序列化之前,我打印出了流数据的位置,它是0。 请让我知道在解决我的代码!非常感谢。 我的C#代码:

在这里输入代码

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的批序列化为单独的数据文件,然后可以单独反序列化。谢谢你!为了批量处理脉冲文件,我们不需要知道不同脉冲数据在流数据中的位置吗?