Распаковка и Сжатие назад не возвращает тот же контент
Почему я не получаю тот же контент после распаковки и сжатия байтового массива с помощью 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();
}
Почему оригинальное содержание!= CompressBackBytes?
1 ответ
Решение
Похоже, что вы все сделали правильно, пока вы не взяли исходный поток ввода и не перезаписали свой компрессор, который содержит ваши распакованные байты. Вы должны поместить свои байты компрессора в сжатые байты.
Ваш ввод (начиная с распаковки), кажется, копирует в него распакованные байты; затем вы копируете его в компрессор, который перезаписывает то, что вы только что распаковали.
Может быть, вы имели в виду что-то вроде
compressedBackBytes = compressor.ToArray();