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;
    }
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;
    }
que je lance avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
zipper(new File("c:/toto/tata"));
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.
Je ne sais pas comment faire :/

Histoire que ce soit clair, voici la structure du disque :
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
Et j'aimerais retrouver dans mon zip :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
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
6
7
 
/toto
       /tata
              pouet.zip
              huhu.doc
              /genre
                       lol.pdf
Qqun aurait une idée de comment faire ?

Merci