Я пишу код для сжатия байтового массива в меньший массив байтов. Тогда я хотел бы, чтобы распаковать его:Сжатие работает, но декомпрессии не
''' <summary>
''' Receives bytes, returns compressed bytes.
''' </summary>
Function Compress(ByRef raw() As Byte) As Byte()
Using memory As MemoryStream = New MemoryStream()
Using gzip As GZipStream = New GZipStream(memory, CompressionMode.Compress)
gzip.Write(raw, 0, raw.Length)
End Using
Return memory.ToArray()
End Using
End Function
''' <summary>
''' Receives compressed bytes, returns bytes.
''' </summary>
Function DeCompress(ByRef compress() As Byte) As Byte()
Using memory As MemoryStream = New MemoryStream()
Using gzip As GZipStream = New GZipStream(memory, CompressionMode.Decompress)
gzip.Write(compress, 0, compress.Length)
End Using
Return memory.ToArray()
End Using
End Function
(я принял этот код из here)
Мой код сжатия работает, но мой декомпрессия код дает следующее сообщение об ошибке:
An unhandled exception of type 'System.InvalidOperationException' occurred in System.dll
Additional information: Writing to the compression stream is not supported.
Я попробовал много вариантов gzip.Read
и обменивал переменные. (Если бы я знал, как заглянуть в внутренний исходный код VB.NET, как я могу с JDK, возможно, я смогу перестроить путь к решениям, ну, ну)
Как я могу переустановить мою функцию DeCompress
для работы как предназначена?
EDIT: Я заметил, что я проголосовал за то, что не использовал метод использования .Read
. Ну, я не могу пройти с помощью анонса .Read
, потому что у моего VB.NET нет функции .CopyTo()
. Я не понимаю, почему:
Когда вы собираетесь распаковывать, вы не пишете в поток, вы читаете из него –
Возможного дубликата [GZipStream и декомпрессии] (http://stackoverflow.com/questions/1581694/gzipstream-and-decompression) –
Я написал, что я пробовал 'gzip.Read' Я не хотел, чтобы мой вопрос длился 10 страниц со всеми моими вариантами пытается .. Спасибо за понижение голосов. –