Bonjour

Je m'arrache les cheveux ce soir, je demande de l'aide parce que je ne trouve pas...

J'ai un répertoire qui a cette arborescence :
resources/test/test_export/machin

J'ai à la racine de ce répertoire :
- un fichier machin.xml
- un répertoire 0001 qui contient un PDF (A.pdf)
- un répertoire 0002 qui contient un PDF (B.pdf)

J'aurais voulu que mon zip soit constitué de cette façon :
- un fichier machin.xml
- un répertoire 0001 qui contient A.pdf
- un répertoire 0002 qui contient B.pdf

Or j'obtiens :
- soit un ZIP qui contient tous les fichiers les uns à côté des autres (si je fais un entry = new ZipEntry(f.getName()); )
- soit un ZIP qui a l'arborescence complète (si je fais un entry = new ZipEntry(f.getPath()); ), c'est-à-dire que le ZIP contient un répertoire resources, qui contient un répertoire test, etc...

Voici mon code :
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
	public static ZipOutputStream creerArchive() {
		String outFilename = "machin" + POINT + EXTENSION_ACP;
		ZipOutputStream out = null;
	    try {
	          BufferedInputStream origin = null;
	          FileOutputStream dest = new FileOutputStream(outFilename);
	          out = new ZipOutputStream(new BufferedOutputStream(dest));
	          byte data[] = new byte[BUFFER];
 
	          File f;
	          FileInputStream fi;
	          ZipEntry entry;
	          int count;
	          for (Iterator<File> it = listeFichiersDocuments.iterator(); it.hasNext(); ) {
	        	  f = it.next();
	        	  fi = new FileInputStream(f);
	        	  origin = new BufferedInputStream(fi, BUFFER);
	        	  entry = new ZipEntry(f.getPath());
	        	  out.putNextEntry(entry);
	        	  while((count = origin.read(data, 0, BUFFER)) != -1) {  
	        		  out.write(data, 0, count);
	        	  }
	        	  origin.close();
	          }
	          out.close();
	       } catch(Exception e) {
	          e.printStackTrace();
	       }
		return out;
	}
où listeFichiersDocuments est une ArrayList<File>, avec le nom complet...

Merci de votre aide