Rechercher : dans
Par :

[JAVA] Stocker flux vers un byte[]

Dernière réponse le 1 oct 2008 à 16:03:26 bapfuror, le 1 oct 2008 à 14:31:35 
 Signaler ce message aux modérateurs

Bonjour,

Je crois que mon problème se résume assez bien dans le titre du sujet.
Je souhaiterais copier un flux BufferedInputStream dans un un tableau de byte (sachant que je ne connais pas la taille de ce qui est dans le flux). J'ai déjà cherché pas mal de temps mais sans succès malheuresement.

J'espère que quelqu'un saura me donner des pistes !

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « [JAVA] Stocker flux vers un byte[] » dans :
[PHP] Headers already sent by..... VoirLorsque vous utilisez une fonction PHP qui manipule les en-têtes HTTP comme par exemple: header() setcookie() session_start() Il est important d'utiliser ces fonctions avant d'avoir généré le moindre flux vers le client. A partir du moment où...

1

Marco la baraque, le 1 oct 2008 à 15:27:29

Bonjour,
As-tu essayé d'utiliser la méthode #BufferedInputStream.available() qui te retourne le nombre de bytes contenu dans ton buffer?
Ainsi tu pourrais créer un byte[] et le remplir grâce à la méthode #BufferedInputStream.read(byte[] b, int off, int len).

Par contre je ne saisis pas trop l'intérêt d'utiliser un BufferedInputStream si tu attends d'avoir toutes les données avant de faire une action (notamment ici de récupérer les données dans ton byte[]).

Cordialement, blogfrisbee point blogspot point com

Répondre à Marco la baraque

2

 bapfuror, le 1 oct 2008 à 16:03:26

A vrai dire j'utilise BufferedInputStream car je dois modifier une classe existante.
Je reçois dans ce flux un fichier pdf. Ainsi lorsque je récupère le flux et que je souhaite ouvrir ce pdf adobe ne fait rien. (la copie dans byte[] est obligatoire car je dois réutiliser le contenu du flux ultérieurement)

BufferedOutputStream bos = new BufferedOutputStream(outstr);
BufferedInputStream bis = new BufferedInputStream(in);
byte[] tmp = new byte[bis.available()];
bis.read(tmp, 0, bis.available());
bos.write(tmp, 0, bis.available());


à comparaison ce code ci me permettait d'ouvrir le pdf mais je n'avais pas la copie dans le byte[]

BufferedInputStream bis = new BufferedInputStream(in);
BufferedOutputStream bos = new BufferedOutputStream(outstr);
byte[] buff = new byte[length];
int bytesRead;
while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}

Quelqu'un verrait il l'erreur dans le premier code

Répondre à bapfuror
Collection CommentÇaMarche.net