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 :

Archive ZIP vide


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 125
    Points : 56
    Points
    56
    Par défaut Archive ZIP vide
    Bonjour,
    J'ai utilisé un tutorial utilisant la librairie java.util.zip pour compresser des fichiers dans une archive ZIP. Tout à l'air en ordre, cependant, l'archive créée est vide. Je ne trouve pas pourquoi, quelqu'un a une idée ?

    Voici le 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
    31
    32
    33
    34
    35
    int BUFFER = 2048;
            byte data[] = new byte[BUFFER];
            try
            {
                FileOutputStream dest = new FileOutputStream("archive.zip");
                CheckedOutputStream checksum = new CheckedOutputStream(dest, new Adler32());
                BufferedOutputStream buff = new BufferedOutputStream(checksum);
                ZipOutputStream out = new ZipOutputStream(buff);
                out.setMethod(ZipOutputStream.DEFLATED);
                out.setLevel(Deflater.BEST_COMPRESSION);
     
     
                File f = new File("C:\\A\\");
                String files[] = f.list();
                for (int i=0; i<files.length; i++) 
                {
            	System.out.println("Adding: "+"C:\\A\\"+files[i]);
                    FileInputStream fi = new FileInputStream("C:\\A\\"+files[i]);
                    BufferedInputStream buffi = new BufferedInputStream(fi, BUFFER);
                    ZipEntry entry = new ZipEntry(unAccent("C:\\A\\"+files[i]));
                    out.putNextEntry(entry);
                    int count;
    	        while((count = buffi.read(data, 0, BUFFER)) != -1) 
                    {
                        out.write(data, 0, count);
                    }
                    out.closeEntry();
                    buffi.close();
                }
                out.close();
                buff.close();
                checksum.close();
                dest.close();
                System.out.println("checksum: " + checksum.getChecksum().getValue());
    	} catch(Exception e) {e.printStackTrace();}

  2. #2
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Alors la bonne question, etant donnée que la source vient du tutorial je pense qu'elle est bonne. J'ai moi meme essayer ce code sur ma machine et comme toi j'ai un petit probleme.

    En faite le zip est correctement crée (c'est mon avis). Lorsque j'essaye de regarder le contenu via windows je ne vois effectivement rien. Si je liste le nom de tous les fichiers via java il m'affiche le nom des fichiers.
    Et enfin si j'essaye de dezipper le zip via windows, windows me dit qu'il a bloquer le contenu (un peu relou ce windows).

    Donc voilà pourquoi je pense que le zip est correcte, c'est que windows fait ce qu'il veut de l'affichage et ne t'affiche que ce qu'il souhaite.

  3. #3
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Cela vient du fait que les entrées du zip commence par "C:", l'utilitaire zip de Windows n'aime pas le caractère ':'.

    En remplaçant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ZipEntry entry = new ZipEntry(unAccent("C:\\A\\"+files[i]));
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ZipEntry entry = new ZipEntry(unAccent("A\\"+files[i]));
    il n'y a plus de problème.

    Remarque : je n'ai pas ce problème avec 7zip, il faudrait essayé avec winzip pour voir s'il y a le même problème ou si celui-ci se limite à l'utilitaire de Windows.

    Remarque 2 : les flux doivent êtres fermés dans des blocs finally (fait une recherche sur le forum, le sujet a été abordé plusieurs fois ).

  4. #4
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 125
    Points : 56
    Points
    56
    Par défaut
    Effectivement, ca fonctionne !

    Merci beaucoup le y@m's .

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

Discussions similaires

  1. [WD15] sauvegarde archive Zip vide
    Par 3alit dans le forum WinDev
    Réponses: 2
    Dernier message: 22/07/2012, 19h51
  2. Créer une archive Zip Vide
    Par guillaumerivière7 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 23/12/2010, 10h16
  3. Réponses: 4
    Dernier message: 03/06/2008, 10h50
  4. [FilZip] Dossiers vides dans une archive .zip
    Par Invité dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 06/12/2007, 08h29
  5. Archive::Zip
    Par Cyspak dans le forum Modules
    Réponses: 2
    Dernier message: 09/09/2003, 13h34

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