Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Manier simple de copier un buffer dans un OutputStream ?

8 réponses
Avatar
Vincent Cantin
Bonjour,

Quelqu'un connait une methode pour copier mon buffer dans mon OutputStream ?
Pour l'instant, je dois faire une boucle qui lit les bytes et les copie un
par un dans un BufferedOutStream.

Merci,
Vincent

8 réponses

Avatar
Vincent Cantin
Quelqu'un connait une methode pour copier mon buffer dans mon OutputStream
?

Pour l'instant, je dois faire une boucle qui lit les bytes et les copie un
par un dans un BufferedOutStream.


Il y a bien une methode FloatBuffer.array() ---> byte[] .. mais dans la doc,
c'est ecrit "optional".

Avatar
Cléo
Quelqu'un connait une methode pour copier mon buffer dans mon OutputStream
?
Pour l'instant, je dois faire une boucle qui lit les bytes et les copie un
par un dans un BufferedOutStream.


Peut-être utiliser un OutputStream de type ByteArrayOutputStream ?

Amicalement.
--
Cléo

Avatar
Vincent Cantin
Quelqu'un connait une methode pour copier mon buffer dans mon
OutputStream


?
Pour l'instant, je dois faire une boucle qui lit les bytes et les copie
un


par un dans un BufferedOutStream.


Peut-être utiliser un OutputStream de type ByteArrayOutputStream ?


Ben .. ca ne resoud pas mon probleme :

J'ai un java.nio.Buffer, que je veux ecrire dans un fichier a travers un
java.io.OutputStream .
Mon probleme est que je n'ai pas trouve de methode dans aucune classe
derivant de java.io.OutputStream permettant d'ecrire le contenu d'un
java.nio.Buffer .

Vincent


Avatar
Marc Petit-Huguenin
Vincent Cantin wrote:
Quelqu'un connait une methode pour copier mon buffer dans mon



OutputStream

?
Pour l'instant, je dois faire une boucle qui lit les bytes et les copie



un

par un dans un BufferedOutStream.


Peut-être utiliser un OutputStream de type ByteArrayOutputStream ?



Ben .. ca ne resoud pas mon probleme :

J'ai un java.nio.Buffer, que je veux ecrire dans un fichier a travers un
java.io.OutputStream .
Mon probleme est que je n'ai pas trouve de methode dans aucune classe
derivant de java.io.OutputStream permettant d'ecrire le contenu d'un
java.nio.Buffer .

Vincent




ByteBuffer buffer = ...
buffer.flip();
FileOutputStream os = new FileOutputStream(...);
FileChannel channel = os.getChannel();
channel.write(buffer);



Avatar
Vincent Cantin
ByteBuffer buffer = ...
buffer.flip();
FileOutputStream os = new FileOutputStream(...);
FileChannel channel = os.getChannel();
channel.write(buffer);


Merci beaucoup ! ^_^

Avatar
Vincent Cantin
ByteBuffer buffer = ...
buffer.flip();
FileOutputStream os = new FileOutputStream(...);
FileChannel channel = os.getChannel();
channel.write(buffer);


Merci beaucoup ! ^_^


euh .. en fait, j'ai un FloatBuffer et pas un ByteBuffer ... la fonction
write ne prend que les ByteBuffer et je ne trouve pas de wrappers pour
changer mon FloatBuffer en ByteBuffer :-(


Avatar
Marc Petit-Huguenin
Vincent Cantin wrote:
ByteBuffer buffer = ...
buffer.flip();
FileOutputStream os = new FileOutputStream(...);
FileChannel channel = os.getChannel();
channel.write(buffer);


Merci beaucoup ! ^_^



euh .. en fait, j'ai un FloatBuffer et pas un ByteBuffer ... la fonction
write ne prend que les ByteBuffer et je ne trouve pas de wrappers pour
changer mon FloatBuffer en ByteBuffer :-(




Une solution pourrait etre d'utiliser un ByteBuffer et les methods
getFloat/putFloat a la place d'utiliser un FloatBuffer et get/put.

Une autre solution consiste a creer un ByteBuffer, puis de creer un
FloatBuffer avec ByteBuffer.asFloatBuffer. Attention, il faut ajuster
position/limit de ByteBuffer avant de l'utiliser (la position/limit du
ByteBuffer est independente de la position/limit du FloatBuffer).

La premiere solution est la plus simple.



Avatar
Vincent Cantin
euh .. en fait, j'ai un FloatBuffer et pas un ByteBuffer ... la fonction
write ne prend que les ByteBuffer et je ne trouve pas de wrappers pour
changer mon FloatBuffer en ByteBuffer :-(

Une solution pourrait etre d'utiliser un ByteBuffer et les methods

getFloat/putFloat a la place d'utiliser un FloatBuffer et get/put.


Pas bete, ca ... c'est envisageable en effet.

Une autre solution consiste a creer un ByteBuffer, puis de creer un
FloatBuffer avec ByteBuffer.asFloatBuffer. Attention, il faut ajuster
position/limit de ByteBuffer avant de l'utiliser (la position/limit du
ByteBuffer est independente de la position/limit du FloatBuffer).


Mais justement, c'est ce que je fais actuellement .. mais je n'ai pas garde
de reference vers le bytebuffer source.

Merci pour les conseils,
Vincent