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();
		}
 
 
	} |