Вопрос по decompression – java.util.zip.ZipException: неверное расстояние слишком далеко назад при распаковке

7

util.zip.ZipException: недопустимое расстояние слишком далеко за этим исключением, когда я распаковываю свои данные .... это происходит в этой строке

zipInput = new GZIPInputStream(fis);
bis = new BufferedInputStream(zipInput);
bis.read(buffer);//here exception occurs

пожалуйста помоги.

Тогда этокак сжатые данные были повреждены. Mark Adler
Тогда сжатые данные были повреждены. Mark Adler
Это не обязательно правда. Ошибка выдается, когда данные анализируются неправильно. Mapsy

Ваш Ответ

1   ответ
3

поток из байтов:

InputStream bStream = new ByteArrayInputStream(bytes);

или из файла:

InputStream bStream = new FileInputStream(fis);

ByteArrayOutputStream bOutStream = new ByteArrayOutputStream();

try{
    GZIPInputStream gis = new GZIPInputStream(bStream);
    byte[] buffer = new byte[1];
    int len;

в какой-то итерационный цикл будет поврежден

    while((len = gis.read(buffer)) != -1){
        bOutStream.write(buffer, 0, len);
    }

    bOutStream.close();
    gis.close();

} catch (IOException e) {
    e.printStackTrace();
    bOutStream.close();
    //print unarchieved bytes
    System.out.println(new String(bOutStream.toByteArray()));
}

Вот почему это помогает найти место коррупции. Все байты до этого места будут показаны правильно.

Похожие вопросы