How to put the content of a ByteBuffer into an OutputStream?
-
06-09-2019 - |
Question
I need to put the contents of a java.nio.ByteBuffer
into an java.io.OutputStream
. (wish I had a Channel
instead but I don't) What's the best way to do this?
I can't use the ByteBuffer's array()
method since it can be a read-only buffer.
I also may be interspersing writes to the OutputStream between using this ByteBuffer and having a regular array of byte[]
which I can with use OutputStream.write()
directly.
Solution
Look at Channels.newChannel(OutputStream). It will give you a channel given an OutputStream. With the WritableByteChannel adapter you can provide the ByteBuffer which will write it to the OutputStream.
public void writeBuffer(ByteBuffer buffer, OutputStream stream) {
WritableByteChannel channel = Channels.newChannel(stream);
channel.write(buffer);
}
This should do the trick!
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow