Распаковка и Сжатие назад не возвращает тот же контент - PullRequest
0 голосов
/ 05 сентября 2018

Почему я не получаю тот же контент после распаковки и сжатия байтового массива с DeflateStream?

код:

byte[] originalcontent = Same Byte Array Content
byte[] decompressedBytes;
byte[] compressedBackBytes;

// Decompress the original byte-array
using (Stream contentStream = new MemoryStream(originalcontent, false))
using (var zipStream = new DeflateStream(contentStream, CompressionMode.Decompress))
using (var decStream = new MemoryStream())
{
    zipStream.CopyTo(decStream);
    decompressedBytes = decStream.ToArray();
}

// Compress the byte-array back
using (var input = new MemoryStream(decompressedBytes, true))
using (var compressStream = new MemoryStream())
using (var compressor = new DeflateStream(compressStream, CompressionMode.Compress))
{
    input.CopyTo(compressor);
    compressedBackBytes = compressStream.ToArray();
}

Почему оригинальное содержание! = СжатыйБэк?

1 Ответ

0 голосов
/ 05 сентября 2018

Похоже, что вы все сделали правильно, пока вы не взяли исходный поток ввода и не перезаписали свой компрессор, который содержит ваши распакованные байты. Вам нужно поместить свои компрессорные байты в сжатыеBackBytes.

Ваш ввод (начиная с распаковки) кажется, что он копирует распакованные байты в него; затем вы копируете его в компрессор, который перезаписывает то, что вы только что распаковали.

Может быть, вы имели в виду что-то вроде

compressedBackBytes = compressor.ToArray();
...