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).
Merci
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; }![]()
Partager