Bonjour à tous

je dois dezipper un fichier crypté par un mot de passe. J'ai donc télécharger la librairie ajdeveloppement pour le faire :
https://www.ajdeveloppement.org/lecturezippassword.html

et le code source est pour l'instant le même que que leur exemple.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
01.//Dézippage d'une archive zip protégé
02.//Les bloc try/catch ont été supprimé pour simplifier l'exemple
03.FileInputStream fin = new FileInputStream("mon_fichier_zip_protégé.zip");
04.EncryptedZipInputStream zin = new EncryptedZipInputStream(fin);
05.//Définition du mot de passe de protection
06.//si le mot de passe est différent pour chaque entrée, déplacer le code dans
07.//la boucle
08.zin.setEncryptedPassword("monmotdepasse".getBytes("ISO-8859-1"));
09. 
10.ZipEntry ze = null;
11.while ((ze = zin.getNextEntry()) != null) {
12.    System.out.println("Unzipping " + ze.getName());
13.    FileOutputStream fout = new FileOutputStream(ze.getName());
14.    for (int c = zin.read(); c != -1; c = zin.read()) {
15.        fout.write(c);
16.    }
17.    zin.closeEntry();
18.    fout.close();
19.}
20.zin.close();
Le problème c'est que dès que je l'execute sur mon fichier zip, je reçois dès le premier fichier de l'archive l'exception :
invalid entry size (expected 846921736 but got 0 bytes)
Ce qui apparrement signifie que le dit fichier est corrompu.

Là où ça m'etonne c'est que ça fait planter toute l'extraction alors que lorsque je decompresse le même zip avec l'utilitaire unzip, le fichier est toujours vide mais l'extraction va au bout. Alors je me dis que ça doit être possible d'ignorer en cas d'erreur et de passer au fichier suivant.

J'ai essayer de gérer les try/catch pour le faire continuer mais l'exception se lève aussi lors de l'appel à zin.getNextEntry() ce qui fait que si je la catch, je sors jamais de la boucle et ne parcours aucun fichier.


Si quelqu'un a déjà eu ce genre de problèmes.

Merci d'avance