Dézipper un tableau de bytes
Bonjour à vous,
J'ai actuellement un problème sous la forme de pdf (stockés en mémoire dans des tableaux de bytes) qui ne se dézippent pas correctement.
Je m'explique :
j'ai une méthode
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public static byte[] getUnzippedBytes(byte[] in) throws IOException {
ByteArrayInputStream input = new ByteArrayInputStream(in);
ZipInputStream zip = new ZipInputStream(input);
//position the stream to the first and only entry ("xml")
ZipEntry entry = zip.getNextEntry();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int read = zip.read();
while (read != -1) {
baos.write(read);
read = zip.read();
}
input.close();
zip.close();
return baos.toByteArray();
} |
qui me décode mal certains fichiers zip. J'en ai parlé à mon responsable de stage qui m'a dit qu'il manquait une boucle sur les zipentry.
J'ai donc modifié sa méthode en :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| public static byte[] getUnzippedBytes(byte[] in) throws IOException {
ByteArrayInputStream input = new ByteArrayInputStream(in);
ZipInputStream zip = new ZipInputStream(input);
//position the stream to the first and only entry ("xml")
ZipEntry entry;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while((entry=zip.getNextEntry())!=null){
int read = zip.read();
while (read != -1) {
baos.write(read);
read = zip.read();
}
}
input.close();
zip.close();
return baos.toByteArray();
} |
et ca ne me renvoie toujours pas un pdf en état de marche.
J'ai fait des recherches sur le net pour trouver ce genre de méthodes mais 99% des méthodes de zip que je trouve fonctionnent sur des fichiers, et c'est un peu le bordel si je dois créer le pdf pour le ré-inputter afin de l'afficher et le supprimer une fois affiché.
Je me demandais donc si vous aviez une idée de ce qui clochait dans ma nouvelle méthode?
Merci d'avance.