Bonjour à tous,
Tout d'abord, merci de vous intéresser à mon problème.
Pour info, je suis débutant en Java.
Pour une application android devant transfèrer du texte sur un serveur, il conviendrait de "zipper" les données pour réduire le volume des données transferées. (Usage en 3G, Conso réduite, ou en EDGE, debit réduit, moins de données transitent, plus c'est rapide)
J'ai écumé les forums, docs en tout genre, j'ai fini par trouver quelques exemples de code qui sembleraient ne pas trop mal correspondre à mes besoins.
Je suis parti de celui-ci :
http://docs.oracle.com/javase/6/docs/api/java/util/zip/...
Lorsque j'execute ce code sans mes ajouts, tout va bien, ca compresse, ca décompresse, et l'intégrité des données est bonne.
Losque j'ajoute mon traitement pour convertir les données compressées en chaine (pour qu'elles transitent sur une socket), j'ai l'erreur suivante : "DataFormatException : data error"
Voici mon code, j'espère que vous pourrez m'aider à comprendre ce que j'ai mal fait, ou une solution plus adaptée à mes besoins.
Merci d'avance,
Hugues.
{
import java.io.*;
import java.util.*;
import java.util.zip.*;
try {
// Encode a String into bytes
byte[] input = myString.getBytes("UTF-8");
// Compress the bytes
byte[] output = new byte[100];
compresser.setInput(input);
compresser.finish();
int compressedDataLength = compresser.deflate(output);
//////////////////////////////////////////////////////////////////////////////////////////////////////
// "Simulation" d'un passage sur une socket en transformant les données compressées en chaine ////////
String compressedString
= new String(output,
0,compressedDataLength
); byte[] out = compressedString.getBytes();
// Lors de la décompression, renvoie systematiquement l'exception "DataFormatException : data error"//
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Decompress the bytes
decompresser.setInput(out, 0, compressedDataLength);
byte[] result = new byte[100];
int resultLength = decompresser.inflate(result);
decompresser.end();
// Decode the bytes into a String
String outputString
= new String(result,
0, resultLength,
"UTF-8");
return outputString;
return "ERROR[|]"+ex;
return "ERROR[|]"+ex;
}
}