Compression avec l’API Zip de Java
Bonjour à tous :
Je debute "toujours" avec java :aie: et j'ai le problème suivant
J'ai utilisé l'excellent tuto de Hugo ETIEVANT pour me familiariser avec les fichiers zip en java . http://cyberzoide.developpez.com/java/zip/
Cependant j'ai le soucis suivant avec la class unzip : dans le cas ou le fichier zip contient des repertoires et sous repertoires , j'ai le message d'erreur suivant (uniquement si les repertoires n'existent pas encore)
Citation:
P:\TEST>java unzip RET\toto.zip
Extracting: fichier1.xml
Extracting: jsp/include/fichier2.jsp
java.io.FileNotFoundException: jsp\include\fichier2.jsp (Le chemin d'accès spécifié est introuvable)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
at java.io.FileOutputStream.<init>(FileOutputStream.java:70)
at unzip.main(unzip.java:59)
Que faut il modifier ou ajouter à la class "unzip" pour creer aussi les sous repertoires si besoin :oops:
Merci de votre aide
@argoet
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| import java.io.*;
import java.util.*;
import java.util.zip.*;
import java.util.Enumeration;
/**
* Classe de création d'une archive Zip
* à partir des fichiers du répertoire courant.
*
* D'après un exemple de la documentation officielle Java Sun
* http://java.sun.com/developer/technicalArticles/Programming/compression/
*
* Author: Hugo ETIEVANT
*/
public class unzip {
/**
* Taille générique du tampon en lecture et écriture
*/
static final int BUFFER = 2048;
/**
* Programme principal.
*/
public static void main (String argv[]) {
/*************
* Décompression
*************/
try {
// fichier destination
BufferedOutputStream dest = null;
// ouverture fichier entrée
FileInputStream fis = new FileInputStream(argv[0]);
// ouverture fichier de buffer
BufferedInputStream buffi = new BufferedInputStream(fis);
// ouverture archive Zip d'entrée
ZipInputStream zis = new ZipInputStream(buffi);
// entrée Zip
ZipEntry entry;
// parcours des entrées de l'archive
while((entry = zis.getNextEntry()) != null) {
// affichage du nom de l'entrée
System.out.println("Extracting: " +entry);
int count;
byte data[] = new byte[BUFFER];
// création fichier
FileOutputStream fos = new FileOutputStream(entry.getName());
// affectation buffer de sortie
dest = new BufferedOutputStream(fos, BUFFER);
// écriture sur disque
while ((count = zis.read(data, 0, BUFFER)) != -1) {
dest.write(data, 0, count);
}
// vidage du tampon
dest.flush();
// fermeture fichier
dest.close();
}
// fermeture archive
zis.close();
} catch(Exception e) {
e.printStackTrace();
}
} |