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 :

problème java + zip : décompression impossible


Sujet :

Entrée/Sortie Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Par défaut problème java + zip : décompression impossible
    Bonjour,

    J'ai une question concernant la décompression d'un fichier au format zip avec java. J'ai créé un fichier "compresser.zip" contenant :

    - un fichier odt
    - un fichier txt
    - une image png
    - une image gif
    - une image jpg
    - un fichier doc
    - un fichier ppt
    - un fichier pdf
    - un fichier texte sans nom

    Je me suis appuyé sur le tutoriel =>>ftp://ftp-developpez.com/cyberzoide/java/zip.pdf pour créer ma fonction.

    Certains fichiers ne sont pas pris en compte et j'obtiens l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Exception in thread "main" java.io.FileNotFoundException: Users\session\test\hello.txt (Le chemin d'accès spécifié est introuvable)
            at java.io.FileOutputStream.open(Native Method)

  2. #2
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Est-ce que le répertoire Users\session\test, à partir du répertoire de travail, existe sur ton poste ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Par défaut
    en fait, je suis passé à Winzip et j'ai viré Quickzip. Au final, j'ai mon archive. Quand je souhaite la décompresser en java, il me liste les fichiers qui sont présents dans le dossier mais certains sont totalement ignorés. Je ne comprends pas pourquoi. Trois fichiers sont ignorés : un jpg, un ppt et un png

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Et ton code est ? Et ton archive de test est ?

    Voila... nous on est pas devin...
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Nouveau candidat au Club
    Inscrit en
    Août 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 2
    Par défaut
    Bonjour,

    J'ai exactement le meme problème.
    le fichier zip semble valide. depuis windows j'arrive à recuperer son contenu. Depuis mon batch java quand il dezipe il ne prend que le premier fichier et ignore les autres sans me remonter d'erreur.

    Dans les propriétés détaillées du zip (en l'ouvrant avec winzip), je vois que le fichier semble incorrect :

    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
    For file "TPBM_semaine15.pdf", the time stamp in the central directory is invalid, using the current system time instead.
    Current Location part 1 offset 1414909
    Central directory entry PK0102 (4+42): #2
    ======================================
        part number in which file begins (0000):        1
        relative offset of local header:                860 (0x0000035c) bytes
        version made by operating system (00):          MS-DOS, OS/2, NT FAT
        version made by zip software (00):              0.0
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0000) (bit 15..0):  0000.0000 0000.0000
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             normal
        file last modified on (0x00000000 0x00000000):  1980-00-00 00:00:00
        32-bit CRC value:                               0x5c22baa0
        compressed size:                                821120 bytes
        uncompressed size:                              839237 bytes
        length of filename:                             18 characters
        length of extra field:                          0 bytes
        length of file comment:                         0 characters
        internal file attributes:                       0x0000
          apparent file type:                           binary
        external file attributes:                       0x00000020
          non-MSDOS external file attributes:           0x000000
          MS-DOS file attributes (0x20):                arc
    Current Location part 1 offset 1414955
        filename:TPBM_semaine15.pdf

    Je continue à chercher ce qui se passe, mais dans l'attente j'aimerai trouver une fonction de validation qui m'indiquerait que mon zip contient des erreurs.

    quelqu'un en connait une ?

    d'avance merci.

    eric

  6. #6
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Donne ton code, on n'est pas devin.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  7. #7
    Nouveau candidat au Club
    Inscrit en
    Août 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 2
    Par défaut
    problème résolu :

    Ancien 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
    //		FileOutputStream fos = null;
    //		ZipEntry zipEntry;
    //		
    //	
    //		try {
    //			while ((zipEntry = zis.getNextEntry()) != null) {
    //				int count;
    //				byte data[] = new byte[BUFFER_SIZE];
    //				// write the files to the disk
    //				String fileNameCibleCourant = (repCible != null ? repCible
    //						+ File.separator : "")
    //						+ new File(zipEntry.getName()).getName();
    //				
    //				logger.info(" fichier à dezipper : " + fileNameCibleCourant);
    //				
    //				fos = new FileOutputStream(fileNameCibleCourant);
    //				outputStream = new BufferedOutputStream(fos, BUFFER_SIZE);
    //				while ((count = zis.read(data, 0, BUFFER_SIZE)) != -1) {
    //					outputStream.write(data, 0, count);
    //				}
    //				zis.closeEntry();
    //				logger.info(" close  zipEntry  ");
    //				outputStream.flush();
    //				outputStream.close();
    //				fos.flush();
    //
    fos.close();

    Le zip que l'on me donne est plutot moisi et la boucle " zis.getNextEntry()) !"
    s'arrete après le premier fichier.
    Maintenant je fais comme cela :
    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 zip = new ZipFile(fileNameZip);
            InputStream in = null;
            FileOutputStream out = null;
     
    		try {
    			for(Enumeration e = zip.entries(); e.hasMoreElements(); ) {
    				ZipEntry entry = (ZipEntry) e.nextElement();
     
    				String fileNameCibleCourant = (repCible != null ? repCible
    						+ File.separator : "")
    						+ new File(entry.getName()).getName();
     
    				File f = new File(repCible, entry.getName());
    				out = new FileOutputStream(f);
     
    				in = zip.getInputStream(entry);
    				int n = 0;
    				byte[] buf = new byte[1024];
    				while((n=in.read(buf)) != -1) {
    					out.write(buf, 0, n);
    				}
    				in.close();
    				out.flush();
    				out.close();
    Et la ça passe !!

    Le ZipInputStream.getNextEntry() ne fonctionne pas toujours (j'ai un seul client qui m'envoi des fichiers comme cela).

    En passant par le ZipFile ca marche mieux.

    a+

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 11
    Par défaut
    Citation Envoyé par eric_brazier Voir le message
    problème résolu :

    Ancien 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
    //		FileOutputStream fos = null;
    //		ZipEntry zipEntry;
    //		
    //	
    //		try {
    //			while ((zipEntry = zis.getNextEntry()) != null) {
    //				int count;
    //				byte data[] = new byte[BUFFER_SIZE];
    //				// write the files to the disk
    //				String fileNameCibleCourant = (repCible != null ? repCible
    //						+ File.separator : "")
    //						+ new File(zipEntry.getName()).getName();
    //				
    //				logger.info(" fichier à dezipper : " + fileNameCibleCourant);
    //				
    //				fos = new FileOutputStream(fileNameCibleCourant);
    //				outputStream = new BufferedOutputStream(fos, BUFFER_SIZE);
    //				while ((count = zis.read(data, 0, BUFFER_SIZE)) != -1) {
    //					outputStream.write(data, 0, count);
    //				}
    //				zis.closeEntry();
    //				logger.info(" close  zipEntry  ");
    //				outputStream.flush();
    //				outputStream.close();
    //				fos.flush();
    //
    fos.close();

    Le zip que l'on me donne est plutot moisi et la boucle " zis.getNextEntry()) !"
    s'arrete après le premier fichier.
    Maintenant je fais comme cela :
    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 zip = new ZipFile(fileNameZip);
            InputStream in = null;
            FileOutputStream out = null;
     
    		try {
    			for(Enumeration e = zip.entries(); e.hasMoreElements(); ) {
    				ZipEntry entry = (ZipEntry) e.nextElement();
     
    				String fileNameCibleCourant = (repCible != null ? repCible
    						+ File.separator : "")
    						+ new File(entry.getName()).getName();
     
    				File f = new File(repCible, entry.getName());
    				out = new FileOutputStream(f);
     
    				in = zip.getInputStream(entry);
    				int n = 0;
    				byte[] buf = new byte[1024];
    				while((n=in.read(buf)) != -1) {
    					out.write(buf, 0, n);
    				}
    				in.close();
    				out.flush();
    				out.close();
    Et la ça passe !!

    Le ZipInputStream.getNextEntry() ne fonctionne pas toujours (j'ai un seul client qui m'envoi des fichiers comme cela).

    En passant par le ZipFile ca marche mieux.

    a+
    MERCI mais vraiment MERCI!!!!
    +1 pour toi

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

Discussions similaires

  1. Problème lors de décompression zip
    Par LuckyLuke56 dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 19/10/2006, 00h39
  2. Problème Java/MySql : "Unknown database"
    Par darkflo dans le forum JDBC
    Réponses: 3
    Dernier message: 24/03/2006, 11h34
  3. [Java Beans XMLEncoder] Impossible d'encoder un objet...
    Par petitpepito dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 27/02/2006, 16h19
  4. problème java run time environment
    Par abrmed dans le forum Autres Logiciels
    Réponses: 7
    Dernier message: 19/08/2005, 13h27

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