Bonjour,

Voila ma petite méthode, elle génére un tableau de byte[] à partir du dossier dont le chemin est passé en paramètre a zipper :

Ma question, le chemin passé est un chemin absolu du type P:\open\commun\commun-serveur\target\test-classes\open\transformations\export

Et mon zip est mis dans un fichier temporaire C:\Documents and Settings\moi\Local Settings\Temp

pour ma part, je voudrai garder dans le ZIP l'arboresence open\transformations\export (du premier chemin).

Mais je sais pas comment faire ?

Pour le moment, je me retrouve avec une arbo C:\Documents and Settings\moi\Local Settings\Temp dans le zip (chaque arbo est un dossier).

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
/**
     * Retourne un tableau de byte du dossier à archiver (zip) dont le chemin est à passer en paramètre
     * @param String chemin du dossier a archiver
     * @return byte[] archive en tableau de byte
     * @throws SauvegardeBaseException 
     * @throws IOException 
     */
    public static byte[] genererArchive(String aCheminFichierAZipper) throws SauvegardeBaseException, IOException
    {
        byte[] vTableauArchiveRetour = null;
 
        //Generation du fichier zip dans un répertoire temporaire
        String vRepertoireTemporaire = System.getProperty("java.io.tmpdir");
 
        FichierArchive vFichierArchive = new FichierArchive(aCheminFichierAZipper, vRepertoireTemporaire);
        List<FichierArchive> vListFicherArchive = new ArrayList<FichierArchive>();
        vListFicherArchive.add(vFichierArchive);
 
        File vFichierTemporaire = new File(vRepertoireTemporaire + "\\archiveExportDonneesTemporaire.zip");
 
        FileUtils.genererArchive(vListFicherArchive, vFichierTemporaire);
 
        File vFichierTemporaireARetourner = new File (vRepertoireTemporaire + "\\archiveExportDonneesTemporaire.zip");
        //Récupération du zip crée et transformation en tableau de byte[]
 
        // On crée un tableau de byte avec une longueur égal à la taille du fichier
        vTableauArchiveRetour = new byte[(int) vFichierTemporaireARetourner.length()];
        // on crée un BufferedInputStream, qui va nous permettre de lire plusieurs byte d'un coup 
        BufferedInputStream in = new BufferedInputStream(new FileInputStream(vFichierTemporaireARetourner));
        // On lit la totalité du ficher.
        //Le premier paramètre est le tableau de byte qui va recevoir les données,
        //le deuxième est la position dans le fichier où on commence à lire les données (donc zéro puisqu'on commence au début du fichier),
        //enfin le dernier paramètre est le nombre d'octet que l'on veut lire
        in.read(vTableauArchiveRetour, 0, (int) vFichierTemporaireARetourner.length());
 
        return vTableauArchiveRetour;
    }
Merci