Как говорится в названии. Как вы распаковываете сжатую строку, сжатую с помощью zlib deflate? Каков твердый способ сделать это с объяснением?Java Decompress строка, сжатая с zlib deflate
2
A
ответ
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);
}
}
Вы должны также легко можно расширить этот пример для сжатия/распаковки файлов.
Надеется, что это помогает ;-)
Дополнительных показаний:
Что нужно для меня? Поскольку начальная длина строки будет варьироваться ... –
Пожалуйста, будьте более конкретным, что вы хотите сделать. Приведенный выше пример не привязан к определенной длине строки. Чтобы быть ясным: изменения inputStr должны быть достаточными. Если вы хотите настроить пример, вы также должны изменить буфер байта (... новый байт [5]), то есть новый байт [1024]. – keocra
что это за байт [] buf? –