0

我尝试将列表写入 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);
    }
}
4

0 回答 0