web-dev-qa-db-ja.com

ByteBufferのコンテンツをOutputStreamに入れる方法は?

Java.nio.ByteBufferの内容をJava.io.OutputStreamに入れる必要があります。 (代わりにChannelが欲しいのですが、ありません)これを行うための最良の方法は何ですか?

ByteBufferのarray()メソッドは読み取り専用のバッファーになる可能性があるため、使用できません。

また、このByteBufferを使用してから、OutputStream.write()を直接使用してbyte[]の通常の配列を作成するまでの間に、OutputStreamへの書き込みを散在させることもできます。

36
Jason S

Channels.newChannel(OutputStream) を見てください。これは、OutputStreamが指定されたチャネルを提供します。 WritableByteChannelアダプターを使用すると、それをOutputStreamに書き込むByteBufferを提供できます。

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

   channel.write(buffer);
}

これでうまくいくはずです!

55
ng.