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 :

[Zip] Dézipper de manière récursive


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 28
    Points : 19
    Points
    19
    Par défaut [Zip] Dézipper de manière récursive
    Bonjour,
    j'ai besoin de faire un programme qui me décompresse des fichiers zip.
    La décompression se fait avec l'import de java.util.zip.* et ne pose pas de problème en soi, si ce n'est que si le fichier contient des sous-répertoires, la décompression engendre des erreurs.

    Quelqu'un saurait-il comment y remédier ?

    Merci

    Seb



    [Modéré par Didier] : ajout de tag dans le titre - Les règles du forum Java

  2. #2
    Membre habitué Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Points : 160
    Points
    160
    Par défaut
    voici le code que j'utilises pour décompresser récursivement :

    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
     
    ZipFile zipFile = new ZipFile("monZip.zip");
    Enumeration entries = zipFile.entries();
    ZipEntry entry;
    File file;
     
    while (entries.hasMoreElements()) {
       entry = (ZipEntry) entries.nextElement();
       file = new File(entry.getName());
       file.getParentFile().mkdir();
       int i = 0;
       byte[] bytes = new byte[1024];
       BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file));
       BufferedInputStream in = new BufferedInputStream(zipFile.getInputStream(entry));
       while((i = in.read(bytes)) != -1)
          out.write(bytes,0,i);
     
       in.close();
       out.flush();
       out.close();
    }
    zipFile.close();
    } catch (FileNotFoundException fileNotFound) {}
    catch (IOException io) {}
    ca peut t'aider
    Hum hum hum...géant vert ! ! !
    Le meilleur moyen de trouver c encore de chercher ! ! !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Bon,
    je spécifie l'endroit où je prends mon fichier zip...
    L'endroit où je le décompresse...

    Si j'execute le code sans rien faire, j'ai une erreur fileNotFound sur le premier fichier extrait...

    Si je crée le sous-répertoire attendu j'ai une erreur NullPointer... Comme si il voulait crée le répertoire après la décompression des fichiers...

    Je ne comprends pas à quoi c'est dû...
    En tout cas merci...
    Seb

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    En fait, il y a des trucs que je ne comprends pas dans ton code...
    Il sert à quoi le File ?

    Voici ce que je faisais et avec lequel j'ai exactement le même résultat (au niveau extraction et erreur) :
    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
     
    try {
    	          ZipInputStream source = new ZipInputStream(new FileInputStream("monFicher.zip"));
    	          ZipEntry entry;
    	          int BUFFER = 2048;
    	          int count;
    	          while((entry = source.getNextEntry()) != null) {
    	              System.out.println("Extraction : "+entry.getName());
    	              FileOutputStream restitution = new FileOutputStream("d:/extract/"+entry.getName());
    	              byte data[] = new byte[BUFFER];
    	              while ((count = source.read(data, 0, BUFFER)) != -1){
    	                  restitution.write(data, 0, count);
    	              }
    	          }
    	       } catch(Exception e) {
    	          e.printStackTrace();
    	       }
    	  }

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Bon, j'ai rien dit pour le file, j'ai lu vite...
    Néanmoins, ceci dit, si je n'ai pas de sous répertoire, ça marche nickel...

    Grrr...

  6. #6
    Membre habitué Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Points : 160
    Points
    160
    Par défaut
    bah disons que mon morceau de code s'arrange pour vérifier si les sous répertoires existent et les crées sinon...et toi tu n'as pas les sous répertoires qui existent donc il ne pourra pas extraire les fichiers dans ces sous répaertoires...voila tout...maintenant je n'ai fais que copier coller mon code et ca fait bien longtps que je ne me suis penché dessus
    Hum hum hum...géant vert ! ! !
    Le meilleur moyen de trouver c encore de chercher ! ! !

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Ben alors pourquoi qu'il ne sont pas créés ?
    J'execute vraiment simplement avec eclipse...
    Moi y'en a pas comprendre...
    J'vais aller voir chez sun...

    en tout cas merci pour ta promptitude.
    Seb

  8. #8
    Membre habitué Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Points : 160
    Points
    160
    Par défaut
    ptet parce que le chemin ou tu créer l'arborescence n'est pas le meme que celui ou tu extrais les fichiers...je vois que a un moment tu rajoutes "d:\...\...\" donc si tu ne rajoutes pas ce chemin lors de la création des dossiers ca va ptet pas le faire non plus...non ?
    Hum hum hum...géant vert ! ! !
    Le meilleur moyen de trouver c encore de chercher ! ! !

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Bonjour,
    J'arrive à faire tout bien comme il faut, en grugeant un peu...
    En fait l'erreur réside dans le fileNotFound... La gruge consiste à faire ce que tu as fait... Catcher l'erreur et ne rien faire...
    Je suis sur que si tu mets un print tu auras une erreur...

    A bientôt
    Seb

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

Discussions similaires

  1. [Zip] Dézipper avec la librairie zip.lib.php
    Par hello-celine dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 05/09/2009, 19h38
  2. Réponses: 38
    Dernier message: 23/02/2008, 01h59
  3. [Tableaux] Construire un tableau de manière récursive
    Par eclipse012 dans le forum Langage
    Réponses: 26
    Dernier message: 23/01/2007, 15h59
  4. Chargement Treeview de manière récursive
    Par exclusif dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 23/01/2007, 13h42
  5. [XSLT] remplacement de noeuds de manière récursive
    Par daniel_r dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 24/10/2005, 20h13

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