Hello,
je zip un répertoire avec le code suivant :
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 public static boolean zipper(File repAZip) { // on déclare le nom du fichier zip -> il correspond au nom du répertoire que l'on veut zipper' File zip = new File(rep_colis, getRep_paquet().getName()+".zip"); try { // on ouvre un flux zip vers le fichier zip ZipOutputStream flux_zip = new ZipOutputStream(new FileOutputStream(zip)); // méthode flux_zip.setMethod(ZipOutputStream.DEFLATED); // niveau de compression flux_zip.setLevel(Deflater.BEST_COMPRESSION); // on lance la compression de ce répertoire zipperRep(repAZip, flux_zip); // une fois terminé, on ferme le flux flux_zip.close(); // si on ne trouve pas le fichier } catch (FileNotFoundException fileNotFound) { return false; // si on n'arrive pas à écrire' } catch (IOException io) { return false; } // tout s'est bien passé' try { FileUtils.deleteDirectory(rep_paquet); } catch (IOException ex) { ex.printStackTrace(); } System.out.println(getRep_paquet().getName()); zip.renameTo(new File(rep_colis, getRep_paquet().getName())); return true; }que je lance avec :
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 public static boolean zipperRep(File repertoire, ZipOutputStream flux_zip) { String[] listFile = repertoire.list(); for (String elem : listFile) { try { File file = new File(repertoire, elem); if (file.isDirectory()) zipperRep(file, flux_zip); else { FileInputStream in = new FileInputStream(file); byte[] bytes = new byte[in.available()]; in.read(bytes); in.close(); ZipEntry entry = new ZipEntry(file.getPath()); entry.setTime(file.lastModified()); flux_zip.putNextEntry(entry); flux_zip.write(bytes); flux_zip.closeEntry(); } } catch (FileNotFoundException fileNotFound) {} catch (IOException io) {} } return false; }
Mon problème est que je veux zipper le contenu de tata sans avoir les sur-répertoire (toto - tata). Je sais que ça vient de la ligne que j'ai mis en gras, car il récupere le path à partir de la racine.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 zipper(new File("c:/toto/tata"));
Je ne sais pas comment faire :/
Histoire que ce soit clair, voici la structure du disque :
Et j'aimerais retrouver dans mon zip :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 c: /toto /tata pouet.zip huhu.doc /genre lol.pdf
Hors actuellement j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 pouet.zip huhu.doc /genre lol.pdf
Qqun aurait une idée de comment faire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 /toto /tata pouet.zip huhu.doc /genre lol.pdf
Merci![]()
Partager