Deflatestream - конец потока, достигнутый до завершения анализа
Я пытаюсь написать список в FileStream. Поскольку объект был слишком большим, я разделил список на равномерно распределенные куски и добавил его в FileStream с DeflateStream для сжатия данных. Это все отлично работает.
Однако, если я пытаюсь сделать то же самое, чтобы распаковать его, это выдает ошибку: "достигнут конец потока, прежде чем синтаксический анализ был завершен". Это код для распаковки:
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));
}
}
}
Что я замечаю, так это то, что первый кусок пользователей хорошо пишется для результата. Однако, когда он должен запускаться на втором блоке пользователей, он сразу выдает ошибку (кажется, даже прежде, чем пытаться получить второй блок). Что я могу сделать с этим или неправильно?
@ Ред. 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);
}
}