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 :

Conversion InputStream en tableau de bytes


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 22
    Points : 16
    Points
    16
    Par défaut Conversion InputStream en tableau de bytes
    Bonjour,

    je n'arrive pas à convertir un InputStream en byte[].
    Savez vous si cela est possible ?

    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 22
    Points : 16
    Points
    16
    Par défaut
    Aucune méthode dans la javadoc ne permet de convertir un InputStream en tableau de bytes malheureusement...
    J'avais déjà regardé ...

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    alors faudrait peut etre lire mieux, il y a deux méthodes qui permettent de lire dans des tableaux de byte:

    read(byte[]) et read(byte[],int,int)

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 22
    Points : 16
    Points
    16
    Par défaut
    Oui mais mon pb n'est pas de lire dans un tableau de bytes mais bien de convertir un inputStream en tableau de bytes ..

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    je vois pas ce que tu veux faire d'autre pour "convertir" que de le lire dans un tableau de byte.....

  7. #7
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 22
    Points : 16
    Points
    16
    Par défaut
    En fait, voici un extrait de mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    InputStream input = connection.getInputStream();
    Et là ma méthode a besoin de retourner un tableau de bytes (correspondant à une image jpeg.

    Donc, selon toi, je dois faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    byte[] data = ???
    input.read(data);
    Et là data correspondra à mon inputStream ?

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    normalement, quand on lit, on boucle sur read(byte[]) avec byte[] un buffer, jusqu'à arriver à la fin du stream (voir la valeur de retour de read). A chaque étape on rempli avec çà un buffer plus grand ou on traite le truc. Ton code pourrait etre par exemple (un exemple parmis tant d'autre), en pseudo code

    récupérer l'inputstream
    créer un buffer temporaire
    créer un bytearrayoutputstream
    tant que des données sont lue dans l'inputstream, les écrire dans bytearrayoutputstream
    finalement appeler toArray() sur le byteArrayoutputstream


    evidement, si tu connais a l'avance la taille de tes donnée, tu fait directement un byte[] a la bonne taille et tu fait un seul et unique appel au read() avec ça. C'est plus performant...

  9. #9
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 22
    Points : 16
    Points
    16
    Par défaut
    Merci bcp M'sieur

  10. #10
    Futur Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 12
    Points : 7
    Points
    7
    Par défaut byte[] To InputStream
    bjr

    j'aimerais savoir coment convertir un byte[] en InputStream


  11. #11
    Membre régulier Avatar de Kevin12
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 122
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    normalement, quand on lit, on boucle sur read(byte[]) avec byte[] un buffer, jusqu'à arriver à la fin du stream (voir la valeur de retour de read). A chaque étape on rempli avec çà un buffer plus grand ou on traite le truc. Ton code pourrait etre par exemple (un exemple parmis tant d'autre), en pseudo code

    récupérer l'inputstream
    créer un buffer temporaire
    créer un bytearrayoutputstream
    tant que des données sont lue dans l'inputstream, les écrire dans bytearrayoutputstream
    finalement appeler toArray() sur le byteArrayoutputstream


    evidement, si tu connais a l'avance la taille de tes donnée, tu fait directement un byte[] a la bonne taille et tu fait un seul et unique appel au read() avec ça. C'est plus performant...
    Voici le code que j'ai, mais ça ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    		ByteArrayOutputStream  out = new ByteArrayOutputStream();		
    		byte[]  buffer  = new byte[1024];
    		int l;
    		do {
    			l = (in.read(buffer));
    			if (l>0)
    			out.write(buffer,0,l);
    		} while (l>0) ;
    		data = out.toByteArray();

  12. #12
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Dans les apache commons IO tu as la méthode statique IOUtils.copy qui permet de copier tout un InputStream dans un OutputStream (pourquoi pas un ByteArrayOutputStream) en une commande.

    Ce serait mieux que ton bricolage bizarre là.

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

Discussions similaires

  1. conversion OutputStream en tableau de byte
    Par friedamichelle dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 30/11/2010, 15h55
  2. conversion d'un tableau de byte en String
    Par Tunisiano87 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 18/11/2010, 17h59
  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. conversion d'un tableau de bytes en string
    Par prady92 dans le forum VB.NET
    Réponses: 3
    Dernier message: 16/03/2007, 13h47
  5. [C# 2.0] Conversion hexadécimale dans un tableau de byte[]
    Par cyllix dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/08/2006, 12h29

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