2015-10-08 2 views

ответ

0

Я нашел this статью в Google, он объясняет, как сжимать и разжимать в Java с помощью Zlib, надеюсь, что это помогает

6

Попробуйте - это минимальный рабочий пример:

package zlib.example; 

import java.io.ByteArrayInputStream; 
import java.io.ByteArrayOutputStream; 
import java.util.Arrays; 
import java.util.zip.Deflater; 
import java.util.zip.DeflaterOutputStream; 
import java.util.zip.InflaterInputStream; 

/** 
* Created by keocra on 08.10.15. 
*/ 
public class Main { 
    private final static String inputStr = "Hello World!"; 

    public static void main(String[] args) throws Exception { 
     System.out.println("Will zlib compress following string: " + inputStr); 

     // will compress "Hello World!" 
     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     DeflaterOutputStream dos = new DeflaterOutputStream(baos); 
     dos.write(inputStr.getBytes()); 
     dos.flush(); 
     dos.close(); 

     // at this moment baos.toByteArray() holds the compressed data of "Hello World!" 

     // will decompress compressed "Hello World!" 
     ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); 
     InflaterInputStream iis = new InflaterInputStream(bais); 

     String result = ""; 
     byte[] buf = new byte[5]; 
     int rlen = -1; 
     while ((rlen = iis.read(buf)) != -1) { 
      result += new String(Arrays.copyOf(buf, rlen)); 
     } 

     // now result will contain "Hello World!" 

     System.out.println("Decompress result: " + result); 
    } 
} 

Вы должны также легко можно расширить этот пример для сжатия/распаковки файлов.

Надеется, что это помогает ;-)

Дополнительных показаний:

+0

Что нужно для меня? Поскольку начальная длина строки будет варьироваться ... –

+0

Пожалуйста, будьте более конкретным, что вы хотите сделать. Приведенный выше пример не привязан к определенной длине строки. Чтобы быть ясным: изменения inputStr должны быть достаточными. Если вы хотите настроить пример, вы также должны изменить буфер байта (... новый байт [5]), то есть новый байт [1024]. – keocra

+0

что это за байт [] buf? –