IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Créer une archive avec une partie des sous-répertoires


Sujet :

Entrée/Sortie Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Créer une archive avec une partie des sous-répertoires
    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 :
    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;
    	}
    où listeFichiersDocuments est une ArrayList<File>, avec le nom complet...

    Merci de votre aide

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Solution trouvée !

    J'ai remplacé le f.getPath() en argument de ZipEntry par f.getPath().substring(f.getPath().indexOf(dossierSortie.getName())); où dossierSortie est une variable initialisée avec le nom du répertoire "machin"...

    Je passe donc le post en

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. Extraire une archive Tar à partir d'un sous répertoire
    Par regsregs dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 24/08/2013, 11h31
  3. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  4. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  5. Réponses: 2
    Dernier message: 21/05/2006, 09h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo