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 :

Dézipper un tableau de bytes


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Septembre 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 10
    Par défaut Dézipper un tableau de bytes
    Bonjour à vous,

    J'ai actuellement un problème sous la forme de pdf (stockés en mémoire dans des tableaux de bytes) qui ne se dézippent pas correctement.

    Je m'explique :

    j'ai une méthode

    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
        public static byte[] getUnzippedBytes(byte[] in) throws IOException {
     
            ByteArrayInputStream input = new ByteArrayInputStream(in);
            ZipInputStream zip = new ZipInputStream(input);
     
            //position the stream to the first and only entry ("xml")
            ZipEntry entry = zip.getNextEntry();
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            int read = zip.read();
            while (read != -1) {
                baos.write(read);
                read = zip.read();
            }
            input.close();
            zip.close();
            return baos.toByteArray();
        }
    qui me décode mal certains fichiers zip. J'en ai parlé à mon responsable de stage qui m'a dit qu'il manquait une boucle sur les zipentry.

    J'ai donc modifié sa méthode en :
    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
       public static byte[] getUnzippedBytes(byte[] in) throws IOException {
     
            ByteArrayInputStream input = new ByteArrayInputStream(in);
            ZipInputStream zip = new ZipInputStream(input);
     
            //position the stream to the first and only entry ("xml")
            ZipEntry entry;
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
     
            while((entry=zip.getNextEntry())!=null){
     
     
                int read = zip.read();
                while (read != -1) {
                    baos.write(read);
                    read = zip.read();
                }	
            }
     
            input.close();
            zip.close();
            return baos.toByteArray();
        }
    et ca ne me renvoie toujours pas un pdf en état de marche.

    J'ai fait des recherches sur le net pour trouver ce genre de méthodes mais 99% des méthodes de zip que je trouve fonctionnent sur des fichiers, et c'est un peu le bordel si je dois créer le pdf pour le ré-inputter afin de l'afficher et le supprimer une fois affiché.

    Je me demandais donc si vous aviez une idée de ce qui clochait dans ma nouvelle méthode?

    Merci d'avance.

  2. #2
    Membre habitué
    Inscrit en
    Septembre 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 10
    Par défaut
    Résolu avec cette méthode :

    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
    public static byte[] getByteArrayUnzippedFromByteArray(byte[] tableauEntree) {
    		    ByteArrayInputStream input = new ByteArrayInputStream(tableauEntree);
    		    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    		    byte[] buf = new byte[1024];
    		    byte [] temp = null;
    		    try {
     
    		      ZipInputStream in = new ZipInputStream(input);
    		      ZipEntry entry = in.getNextEntry();
    		      int zipeSize = (int) entry.getSize();
     
    		      int len;
    		      while ( (len = in.read(buf)) > 0) {
    		        stream.write(buf, 0, len);
    		      }
    		      temp = stream.toByteArray();
    		      in.close();
    		    }
    		    catch (IOException e) {
    		      System.out.println(e.getMessage());
    		    }
    		    return temp;
    		  }

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

Discussions similaires

  1. [Socket][File] Envoyer un tableau de byte
    Par itsmii dans le forum Entrée/Sortie
    Réponses: 14
    Dernier message: 30/01/2014, 09h10
  2. Réponses: 1
    Dernier message: 09/05/2005, 14h19
  3. probleme d allocation avec un tableau de BYTE
    Par e1lauren dans le forum C++
    Réponses: 5
    Dernier message: 06/05/2005, 13h42
  4. [VB.NET] Tableau de bytes Lecture/Ecriture
    Par BenoitM dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/04/2005, 09h51
  5. [C#] Convertir un tableau de byte en Image
    Par goulhasch dans le forum ASP.NET
    Réponses: 4
    Dernier message: 24/01/2005, 10h12

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