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

Collection et Stream Java Discussion :

problème avec java.util.zip.Inflater


Sujet :

Collection et Stream Java

  1. #1
    Membre régulier
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 166
    Points : 112
    Points
    112
    Par défaut problème avec java.util.zip.Inflater
    Je cherche donc à décompresser une chaine avec la classe Inflater, voici mon bout de 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
     
    String p_message = "Un truc à compresser";
    ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
    Deflater deflater = new Deflater(Deflater.DEFLATED,true);
    DeflaterOutputStream def = new DeflaterOutputStream(byteArray, deflater);
    def.write(p_message.getBytes());
    def.close();
    byteArray.close();
    String deflated = byteArray.toString();
    Inflater inflater = new Inflater(true);
    inflater.setInput(deflated.getBytes());
    byte[] b = new byte[100];
    int nbbyte = 0;
    try {
    	nbbyte = inflater.inflate(b);
    } catch (RuntimeException e) {
    	e.printStackTrace();
    }
    J'obtiens l'exception suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Exception in thread "main" java.util.zip.DataFormatException: invalid distance code
    	at java.util.zip.Inflater.inflateBytes(Native Method)
    	at java.util.zip.Inflater.inflate(Unknown Source)
    	at java.util.zip.Inflater.inflate(Unknown Source)
    Ca a quelque chose a voir avec l'étape
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String deflated = byteArray.toString();
    puis
    deflated.getBytes()
    car si je passe directement byteArray.toByteArray() à l'Inflater, ca fonctionne...
    Le problème c'est que dans mon programme, entre la compression et la décompression j'ai besoin d'avoir l'objet sous forme d'un String....

  2. #2
    Membre régulier
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 166
    Points : 112
    Points
    112
    Par défaut
    Bon en fait j'ai trouvé la solution toute seule, le problème vient effectivement du passage de byte[] en String. Dans la javadoc de la classe String on peut voir :
    The behavior of this constructor when the given bytes are not valid in the default charset is unspecified.

    La solution est de passer par un encodage base64 pour transformer le tableau de byte en String.

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

Discussions similaires

  1. Problème avec java.util.Scanner.
    Par Andarus dans le forum Langage
    Réponses: 2
    Dernier message: 17/01/2012, 11h54
  2. Réponses: 2
    Dernier message: 11/12/2009, 22h27
  3. Problème avec java.util.Scanner
    Par fab56 dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 16/09/2009, 21h25
  4. probleme avec java.util.zip
    Par tarekphp dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 13/05/2009, 18h36
  5. Problème avec java.util.List
    Par alphonse62 dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 11/06/2007, 11h03

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