37

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

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

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

4

1 に答える 1

60

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

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

   channel.write(buffer);
}

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

于 2009-02-23T22:16:25.200 に答える