Я пытаюсь распаковать данные, которые были сжаты с использованием библиотеки ZLIB, написанной Жаном-лупом Гэйли еще в 1990-х годах.Я думаю, что это популярная библиотека (я вижу много программ, которые поставляют файл zlib32.dll, который он использует), поэтому я надеюсь, что кто-то будет достаточно знаком с ней, чтобы помочь мне.Я непосредственно использую функцию compress (), которая из того, что я читаю, использует формат rfc-1951 DEFLATE.
Вот фрагмент кода, который я использую для чтения сжатых данных из потока и его распаковки:
InputStream is = new ByteArrayInputStream(buf);
//GZIPInputStream gzis = new GZIPInputStream(is);
InflaterInputStream iis = new InflaterInputStream(is);
byte[] buf2 = new byte[uncompressedDataLength];
iis.read(buf2);
Функция iis.read (buf2) выдает внутреннее исключение «Ошибка формата данных».Я также пытался использовать GZIPInputStream, но он также выдает то же исключение.
Переменная "buf" - это тип byte [], и я подтвердил отладкой, что это то же самое, что моя программа на C возвращает изФункция ZLIB compress () (фактические данные поступают с сервера через TCP)."uncompressedDataLength" - это известный размер несжатых данных, которые также были предоставлены программой (сервером) на языке C.
Кто-нибудь пробовал читать / записывать данные с использованием этой библиотеки, а затем считывать / записывать те же данные на Android?используя Java?
Я нашел «чистый порт Java ZLIB», на который ссылаются в нескольких местах, и если мне нужно, я могу попробовать это, но я бы предпочел использовать встроенные функции / OS, если это возможно.