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.
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 :
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();
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
Partager