Bonjour à tous :
Je debute "toujours" avec java 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)
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

Merci de votre aide
@argoet


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