Как поместить содержимое ByteBuffer в OutputStream? - PullRequest
34 голосов
/ 24 февраля 2009

Мне нужно поместить содержимое java.nio.ByteBuffer в java.io.OutputStream. (хотелось бы вместо этого иметь Channel, но у меня его нет) Какой лучший способ сделать это?

Я не могу использовать метод ByteBuffer array(), поскольку он может быть буфером только для чтения.

Я также могу перемежать записи в OutputStream между использованием этого ByteBuffer и наличием регулярного массива byte[], который я могу напрямую использовать OutputStream.write().

1 Ответ

51 голосов
/ 24 февраля 2009

Посмотрите на Channels.newChannel (OutputStream) . Это даст вам канал с заданным OutputStream. С помощью адаптера WritableByteChannel вы можете предоставить ByteBuffer, который запишет его в OutputStream.

public void writeBuffer(ByteBuffer buffer, OutputStream stream) {
   WritableByteChannel channel = Channels.newChannel(stream);

   channel.write(buffer);
}

Это должно сработать!

...