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 :
où listeFichiersDocuments est une ArrayList<File>, avec le nom complet...
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; }
Merci de votre aide![]()
Partager