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 :

[Sérialisation] byte[] to String et String to byte[]


Sujet :

Entrée/Sortie Java

  1. #1
    Membre actif

    Inscrit en
    Août 2002
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Août 2002
    Messages : 302
    Points : 285
    Points
    285
    Par défaut [Sérialisation] byte[] to String et String to byte[]
    Bonjour tout le monde,
    J'ai développé un service web qui permet de me renvoyer un etat au format pdf.
    Coté serveur mon fichier pdf est tableau de byte. J'ai utilisé le code ci dessous pour le convertir en String.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    char[] hexadecimal = 
    //la variable rapport est un byte[]
    org.apache.commons.codec.binary.Hex.encodeHex(rapport);
    //element = new org.jdom.Element(nom,namespace);
    		element.setText(new String(hexadecimal));
    Coté client du webservice j'exécute le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    FileWriter fwPdf = new FileWriter(new File("test.pdf"));
    byte[] resultat =org.apache.commons.codec.binary.Hex.decodeHex(response.toCharArray());
    fwPdf.write(new String(resultat));
    fwPdf.close();
    En comparant les deux résultats avec un éditeur texte simple je me rends compte que j'ai des caractères qui différent. Pouvez vous m'aider pour que je trouve la bonne manière pour convertir et récupérer mon byte[] correctement?
    Je vous en remercie d'avance

  2. #2
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Points : 215
    Points
    215
    Par défaut
    Bonjour,

    Ce sujet traite de la conversion byte[] --> String, il pourra peut-être te permettre de revoir ta méthode de conversion.
    Sinon, tu peux aussi voir les différents constructeurs de String qui utilise un byte[] ici.

  3. #3
    Membre actif

    Inscrit en
    Août 2002
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Août 2002
    Messages : 302
    Points : 285
    Points
    285
    Par défaut
    Je te remercie pour ta réponse mais il se trouve que la méthode indiquée dans le post ne résout pas mes problèmes parce que ce que je cherche à convertir je l'insère dans un message xml. Donc quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    element.setText(new String(rapport,"UTF-8").toString());
    ca me gueule dessus avec l'exception suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    org.jdom.IllegalDataException: The data "%PDF-1.4 ....................is not 
    legal for a JDOM character content: 0x0 is not a legal XML character.

  4. #4
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    Pour que ca passe dans un fichier XML je te conseil de passer ton byte[] à une moulinette Base64, qui ne contiendra alors aucun caractère pouvant interférer avec le XML.

  5. #5
    Membre actif

    Inscrit en
    Août 2002
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Août 2002
    Messages : 302
    Points : 285
    Points
    285
    Par défaut
    Merci, ça marche nikel il m'a fallu utiliser base64 encoder et decoder mais aussi un BufferedOutputStream pour ecrire des bytes dans un fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    File filePDF = new File("test.pdf");
    BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePDF));
    bos.write(Base64.decode(response.getBytes()));
    bos.close();

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/04/2015, 15h56
  2. convertir string en tableau de byte
    Par wolfazer dans le forum VB.NET
    Réponses: 3
    Dernier message: 29/10/2007, 08h15
  3. Conversion String en tableau de Byte
    Par riete dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 05/09/2007, 09h27
  4. Formater une string en tableau de byte
    Par lamoufle dans le forum C
    Réponses: 5
    Dernier message: 22/11/2006, 16h51
  5. Alimenter une image byte[] à partir d'un String
    Par SheikYerbouti dans le forum AWT/Swing
    Réponses: 18
    Dernier message: 31/10/2006, 07h54

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