Deflatestream - 在解析完成之前到达流的末尾

时间:2015-10-16 08:15:08

标签: c# filestream compression deflatestream

我尝试将List写入FileStream。由于对象太大,我将列表分成均匀分布的块,然后使用DeflateStream将其附加到FileStream以压缩数据。一切正常。

但是,如果我尝试对其进行解压缩,则会出现错误:'在解析完成之前到达流的末尾'。这是解压缩的代码:

using (FileStream fs = new FileStream(filePath, FileMode.Open)) {
    using (DeflateStream ds = new DeflateStream(fs, CompressionMode.Decompress, true)) {
        //Deserialize offerte
        BinaryFormatter bf = new BinaryFormatter();
        //Check position
        while (ds.BaseStream.Position < ds.BaseStream.Length) {
            result.AddRange((List<User>)bf.Deserialize(ds));
        }
    }
}

我注意到第一块用户正好被写入结果。然而,当它应该从第二块用户开始时,它会立即发出错误(似乎在尝试获取第二块之前)。我该怎么办或错了?

@Edit 10:43 - 16-10-2015补充说明

如果我跳过DeflateStream并且只使用FileStream,那么它就像魅力一样。

压缩方法(我称这个函数x次,每个块一次):

using (FileStream fs = new FileStream(filePath, FileMode.Append)) {
    using (DeflateStream cs = new DeflateStream(fs, CompressionMode.Compress)) {
        //Serialize offerte
        BinaryFormatter bf = new BinaryFormatter();
        bf.Serialize(cs, offerte);
    }
}

0 个答案:

没有答案