problème avec java.util.zip.Inflater
Je cherche donc à décompresser une chaine avec la classe Inflater, voici mon bout de code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
String p_message = "Un truc à compresser";
ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
Deflater deflater = new Deflater(Deflater.DEFLATED,true);
DeflaterOutputStream def = new DeflaterOutputStream(byteArray, deflater);
def.write(p_message.getBytes());
def.close();
byteArray.close();
String deflated = byteArray.toString();
Inflater inflater = new Inflater(true);
inflater.setInput(deflated.getBytes());
byte[] b = new byte[100];
int nbbyte = 0;
try {
nbbyte = inflater.inflate(b);
} catch (RuntimeException e) {
e.printStackTrace();
} |
J'obtiens l'exception suivante :
Code:
1 2 3 4
| Exception in thread "main" java.util.zip.DataFormatException: invalid distance code
at java.util.zip.Inflater.inflateBytes(Native Method)
at java.util.zip.Inflater.inflate(Unknown Source)
at java.util.zip.Inflater.inflate(Unknown Source) |
Ca a quelque chose a voir avec l'étape
Code:
1 2 3
| String deflated = byteArray.toString();
puis
deflated.getBytes() |
car si je passe directement byteArray.toByteArray() à l'Inflater, ca fonctionne...
Le problème c'est que dans mon programme, entre la compression et la décompression j'ai besoin d'avoir l'objet sous forme d'un String....