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 :

Options de compression


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 52
    Points : 58
    Points
    58
    Par défaut Options de compression
    Bonjour,

    voila deux semaines que je fais du java et que je peste contre le minimalisme de la javadoc.
    Je rencontre un problème lors de la compression de fichier en utilisant la librairie java.util.zip
    Voici le code que j'utilise :
    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
     
    public static void compress(String[] stFileName, String stZipFileName)
        throws Exception
    {
        ZipOutputStream out = new ZipOutputStream(new FileOutputStream(stZipFileName));
        byte[] buf = new byte[1024];
     
        // Compress the files
        for (int i = 0; i < stFileName.length; i++)
        {
            FileInputStream in = new FileInputStream(stFileName[i]);
            out.putNextEntry(new ZipEntry(stFileName[i]));
     
            // Transfer bytes from the file to the ZIP file
            int len;
            while((len = in.read(buf)) > 0)
            {
                out.write(buf, 0, len);
            }
     
            // Complete the entry
            out.closeEntry();
            in.close();
        }
     
        // Complete the ZIP file
        out.close();
    }
    Malheureusement, l'archive sauvegarde le chemin d'accès au fichier ce qui ne m'arrange absolument pas car lors de la décompression, il me recrée tous les répertoires.
    Je cherche un moyen d'éviter ça.

    Merci à toute personne qui prendra deux minutes pour se pencher sur la question.

    stf

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 220
    Points : 266
    Points
    266
    Par défaut
    C'est normal qu'il le fasse a priori...

    Si tu veux ne pas recréer les repertoires, en decompressant, si tu le fais a partir d'un outil, il y a generalement des options la dessus (en tout cas, j'en ai sur PowerArchiver...), sinon, si c'est par une appli Java, il te suffit de reintercepter le flux de donnees et de nommer toi meme le fichier...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 52
    Points : 58
    Points
    58
    Par défaut
    Merci pour cette réponse.
    Peux-tu être plus précis sur la décompression s'il te plait. Je décompresse effectivement par une appli java.

    Dans powerarchiver, c'est au moment de la compression qu'il demande si on veut sauvegarder le chemin...

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 220
    Points : 266
    Points
    266
    Par défaut
    Ben en gros, quand tu fais ta compression, tu vas chercher un fichier via un FileOutputStream, que tu englobes dans un ZipOutputStream, avec un closeEntry, et un putNextEntry...

    Sur une appli java pour decompresser, tu vas utiliser un ZipOutputStream, en faisant un read, avec les GetNextEntry necessaires...

    Tu vas recuperer un tableau de byte pour tes données, il te suffit de les ecrire classiquement dans un objet FileWriter, ou tu determines toi meme le nom du fichier, et le chemin...

    Si tu veux determiner a l'avance le chemin de ton fichier, deja au sein du zip, tu peux utiliser le SetComment sur l'objet ZipEntry, et recuperer ce commentaire dans ton decompresseur...

    Enfin, si je me plante pas, ca fait longtemps que j'ai pas utiliser ca...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 52
    Points : 58
    Points
    58
    Par défaut
    OK, merci pour ces tuyaux, je vais essayer d'en faire bon usage

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 220
    Points : 266
    Points
    266
    Par défaut
    Sinon, tu peux faire une relecture de ton zip, en ascii, tu as les chemins marqués en clair dans le zip... (essaye d'ouvrir un zip avec le bloc note, tu verras le nom et le chemin de ton premier fichier...)

    Tu peux peut etre les modifier a ce niveau la, si il n'y a pas de verification sur la taille du chemin de decompression... Sinon, plus dur...

  7. #7
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2002
    Messages : 125
    Points : 150
    Points
    150
    Par défaut
    pour ne pas avoir d'arborescence dans ton zip, je crois qu'il suffit de mettre seulement le nom du fichier (sans arborescence) dans ton ZipEntry.
    ne ré-inventez pas la roue, allez chercher dans les Commons de Jakarta

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 52
    Points : 58
    Points
    58
    Par défaut
    Mais bien sur, merci jcarre (quel crétin de ne pas y avoir pensé )

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 52
    Points : 58
    Points
    58
    Par défaut
    Ca marche du tonnerre, encore merci jcarre pour ton bon sens 8)

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

Discussions similaires

  1. Taille d'une table et option compress
    Par krm75 dans le forum SAS Base
    Réponses: 3
    Dernier message: 17/09/2013, 11h41
  2. [DATA] Option compress dans une étape data
    Par Fatah93 dans le forum SAS Base
    Réponses: 2
    Dernier message: 21/06/2013, 15h43
  3. Option COMPRESS pour les INDEX
    Par Wurlitzer dans le forum Oracle
    Réponses: 12
    Dernier message: 12/07/2006, 09h55
  4. compression de données du point de vue algorithmique
    Par GoldenEye dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 26/06/2002, 15h51
  5. Vous gerez comment les options d'un programme?
    Par n0n0 dans le forum C++Builder
    Réponses: 5
    Dernier message: 17/05/2002, 13h21

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