[JAVA] Stocker flux vers un byte[]
bapfuror
Messages postés
45
Statut
Membre
-
bapfuror Messages postés 45 Statut Membre -
bapfuror Messages postés 45 Statut Membre -
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 !
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 !
A voir également:
- [JAVA] Stocker flux vers un byte[]
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Eclipse java - Télécharger - Langages
2 réponses
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,
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,
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
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