2009-02-23 202 views
32

我需要将java.nio.ByteBuffer的内容放入java.io.OutputStream。 (希望我有一个Channel,但我不这样做)最好的方法是什么?如何将ByteBuffer的内容放入OutputStream中?

我不能使用ByteBuffer的array()方法,因为它可以是只读缓冲区。

我也可能会在使用此ByteBuffer和具有byte[]的常规数组之间插入对OutputStream的写入,我可以直接使用OutputStream.write()

回答

44

看看Channels.newChannel(OutputStream)。它会给你一个给出OutputStream的通道。使用WritableByteChannel适配器,您可以提供将其写入OutputStream的ByteBuffer。

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

    channel.write(buffer); 
} 

这应该是诀窍!

+0

如果我保持频道以及流,我可以混合调用两者吗? – 2009-02-23 22:26:07

相关问题