Je dois mettre le contenu d'un java.nio.ByteBuffer
dans un java.io.OutputStream
. (J'aimerais avoir un Channel
à la place, mais je ne le fais pas) Quelle est la meilleure façon de le faire?Comment mettre le contenu d'un ByteBuffer dans un OutputStream?
Je ne peux pas utiliser la méthode array()
de ByteBuffer car il peut s'agir d'un tampon en lecture seule.
Je peux également intercaler des écritures dans le OutputStream entre l'utilisation de ce ByteBuffer et un tableau régulier de byte[]
que je peux utiliser avec OutputStream.write()
directement.
Si je conserve le canal ainsi que le flux, puis-je mélanger les appels aux deux? –
Ya, bien sûr, réduit le coût de création du canal à chaque fois :) –
Notez que cette approche implique la copie à partir du ByteBuffer dans un tableau temporaire qui est ensuite écrit dans le OutputStream. Si les performances sont importantes, vous devrez peut-être procéder à un refactoring afin d'éviter les copies de blocs inutiles. –