Java.nio.ByteBuffer
の内容をJava.io.OutputStream
に入れる必要があります。 (代わりにChannel
が欲しいのですが、ありません)これを行うための最良の方法は何ですか?
ByteBufferのarray()
メソッドは読み取り専用のバッファーになる可能性があるため、使用できません。
また、このByteBufferを使用してから、OutputStream.write()
を直接使用してbyte[]
の通常の配列を作成するまでの間に、OutputStreamへの書き込みを散在させることもできます。
Channels.newChannel(OutputStream) を見てください。これは、OutputStreamが指定されたチャネルを提供します。 WritableByteChannelアダプターを使用すると、それをOutputStreamに書き込むByteBufferを提供できます。
public void writeBuffer(ByteBuffer buffer, OutputStream stream) {
WritableByteChannel channel = Channels.newChannel(stream);
channel.write(buffer);
}
これでうまくいくはずです!