有沒有辦法將數據寫入到連接到通道的OutputStream對象,並且此通道將數據傳遞給bytebuffer(最好是直接bytebuffer)?使用通道將數據從outputStream傳遞到bytebuffer
我有一種情況,第三方函數可以將其輸出寫入outputStream。我希望能夠使用通道將此數據寫入字節緩衝區。
可能嗎?
謝謝
有沒有辦法將數據寫入到連接到通道的OutputStream對象,並且此通道將數據傳遞給bytebuffer(最好是直接bytebuffer)?使用通道將數據從outputStream傳遞到bytebuffer
我有一種情況,第三方函數可以將其輸出寫入outputStream。我希望能夠使用通道將此數據寫入字節緩衝區。
可能嗎?
謝謝
您可以輕鬆創建一個類,extends OutputStream
,因爲這不僅需要一個方法來實現。示例,未經測試的代碼:
public final class ByteBufferOutputStream
extends OutputStream
{
private final ByteBuffer buf;
public ByteBufferOutputStream(final int size)
{
buf = ByteBuffer.allocateDirect(size);
}
@Override
public void write(final int b)
throws IOException
{
if (buf.remaining() == 0)
throw new IOException("buffer is full");
buf.put((byte) (b & 0xff));
}
}
然後,只需將該類的一個實例傳遞給您的API。由於ByteBuffer
有專門的方法來寫入字節數組,因此您也可能想要覆蓋其他write
方法。
你能發佈你的頻道代碼嗎? – fge
我還沒有任何頻道。我打算添加一個能夠讀取寫入outputStream的數據並將其傳遞給byteBuffer – Marco
然後,您只需要一個'ByteBuffer'而不是一個通道,對吧? – fge