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

AWT/Swing Java Discussion :

chemin d'un fichier zip


Sujet :

AWT/Swing Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 42
    Points : 28
    Points
    28
    Par défaut chemin d'un fichier zip
    Salut tout le monde,
    j'ai créé un fichier zip à partir d'un fichier source en utilisant les classes ZipOutputStream et ZipEntry et ça marche plus ou moins correctement
    voici le code que j'ai utilisé pour cette opération:

    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
     
       final ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(targetZipFileName));
            zipOutputStream.setLevel(Deflater.DEFAULT_COMPRESSION);
     
                final File inputFile = new File(inputFileName);
                final FileInputStream fileInputStream = new FileInputStream(inputFile);
                zipOutputStream.putNextEntry(new ZipEntry(inputFileName));
     
                int size = 0;
                final byte[] buffer = new byte[1024];
     
                while ((size = fileInputStream.read(buffer, 0, buffer.length)) > 0)
                {
                    zipOutputStream.write(buffer, 0, size);
                }
     
                zipOutputStream.closeEntry();
                fileInputStream.close();
                 zipOutputStream.close();

    voici le problème:
    quand j’exécute ce code sur un fichier contenu dans une arborescence comme par exemple : C:\DossierA\DossierB\DossierC\file.txt
    le fichier zip est généré correctement mais quand je l'ouvre avec 7Zip ou winrar, je tombe sur le dossier C: puis je dois l'ouvrir pour trouver DossierA, ensuite j'ouvre pour trouver DossierB,... jusqu'à trouver le fichier en question

    ma question est comment je peux créer le fichier zip de sorte que quand je l'ouvre avec (par exemple) 7Zip, je tombe directement sur le fichier compressé sans parcourir l'arborescence dans laquelle il se trouve

    merci d'avance

  2. #2
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Bonjour,

    Le problème vient du fait que tu passes le chemin complet au constructeur de ZipEntry.

    Il faudrait plutôt faire ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    zipOutputStream.putNextEntry(new ZipEntry(inputFile.getName()));

  3. #3
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    L'emplacement à l'intérieur du fichier ZIP dépend du nom que tu passes au ZipEntry. Si tu passes une arborescence tu auras une arborescence dans le zip :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    zipOutputStream.putNextEntry(new ZipEntry(inputFileName));
    Si tu veux simplement un fichier à la "racine" du zip, il suffit de mettre uniquement le nom du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    zipOutputStream.putNextEntry(new ZipEntry(inputFile.getName()));

    a++

    PS : Au passage j'en profite pour te conseiller d'utiliser des try/finally pour fermer les ressources


    [edit] Grillé

  4. #4
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 42
    Points : 28
    Points
    28
    Par défaut
    merci beaucoup les amis ,
    mon probleme est resolu maintenant

    le fichier est crée correctement directement dans la "racine" de l'archive
    @adiGuba
    PS : Au passage j'en profite pour te conseiller d'utiliser des try/finally pour fermer les ressources
    en effet j'utilise déjà les try/catch mais pour alléger le code que j'ai copié je les ai supprimés

    en tous cas merci beaucoup pour le conseil

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

Discussions similaires

  1. [Zip] Créer un fichier zip
    Par Mykeul dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 07/03/2005, 17h38
  2. Executer un fichier zip
    Par Sébastien THEVOT dans le forum C++Builder
    Réponses: 15
    Dernier message: 11/10/2004, 11h35
  3. Extraction d'un fichier zip
    Par dyason dans le forum Général Python
    Réponses: 2
    Dernier message: 13/07/2004, 13h35
  4. Fonction permettant d'afficher le chemin d'un fichier
    Par kilinette dans le forum Langage
    Réponses: 4
    Dernier message: 22/06/2004, 11h52
  5. [Fichier Zip] Comment zipper un fichier
    Par caro_a dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 27/05/2004, 10h40

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