2009-02-23 198 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

相關問題