Olá Pessoal!
Preciso compactar uma String e armazenar em outra String e, se for necessário, preciso que meu código leia a String compactada e descompacte.
O código deste link [url]http://java.sun.com/j2se/1.4.2/docs/api/java/util/zip/Deflater.html[/url] faz o que eu preciso, mas se eu resolvo separar a parte que compacta num método e a parte que descompacta em outro, o código passa a não descompactar mais, ou seja, retorna uma String vazia.
Meu código ficou assim:import java.util.zip.Deflater;
import java.util.zip.Inflater;
public class Zip {
private static int quantidade = 0;
public static void main(String[] args) {
String s = compacta("8888887777yyyyeeeeeiiiiaoaoaooooaaaaaa");
System.out.println(s);
System.out.println(descompacta(s, quantidade));
}
public static String compacta(String expressao) {
try {
byte[] input = expressao.getBytes("UTF-8");
byte[] output = new byte[100];
Deflater compresser = new Deflater();
compresser.setInput(input);
compresser.finish();
quantidade = compresser.deflate(output);
return new String(output, 0, quantidade, "UTF-8");
} catch (java.io.UnsupportedEncodingException ex) {
ex.printStackTrace();
return "";
}
}
public static String descompacta(String expressao, int tam) {
try {
byte output[] = expressao.getBytes();
Inflater decompresser = new Inflater();
decompresser.setInput(output, 0, tam);
byte[] result = new byte[100];
int resultLength = decompresser.inflate(result);
decompresser.end();
return new String(result, 0, resultLength, "UTF-8");
} catch (java.io.UnsupportedEncodingException ex) {
ex.printStackTrace();
return "";
} catch (java.util.zip.DataFormatException ex) {
ex.printStackTrace();
return "";
}
}
}
Existe tbem um tutorial neste site [url]http://www.developer.com/java/other/article.php/10936_3603066_3[/url] usando o algoritmo de Huffman, que tem o mesmo problema.
Se eu invoco o método de compactar e descompactar no mesmo método, é retornado o valor correto, mas se eu resolvo invocar em momentos diferentes, o programa não descompacta, retorna uma String vazia.
Eu preciso urgente que isso funcione.
Obrigada!
