ChannelBufferInputStream

ChannelBufferInputStream

ChannelBufferInputStream.available()方法为:

@Override
public int available() throws IOException {
    return endIndex - buffer.readerIndex();
}


如果在初始化输入流之后写入缓冲区,这不会中断吗?

这不应该是

return buffer.writerIndex() - buffer.readerIndex();


我正在尝试做这样的事情:
初始化缓冲区和流并读取/写入ChannelBuffer。我在这里想念什么?

final ChannelBuffer _channelBuffer = ChannelBuffers.dynamicBuffer();

final ChannelBufferOutputStream _outputStream = new ChannelBufferOutputStream(_channelBuffer);

final ChannelBufferInputStream _inputStream = new ChannelBufferInputStream(_channelBuffer);


编辑:
根据ChannelBufferedInputStream的构造函数文档:“创建一个新流,该流从指定的缓冲区读取数据,该缓冲区从当前readerIndex开始,到当前writerIndex结束。”

在这种情况下,这是有道理的。但是有没有办法实现我想要做的事情?具有单个后备缓冲区,读取操作等待写入操作完成。

最佳答案

我需要一个流来拉一个AudioInputStream,该流不幸地在单独的线程中运行,但是我发现使用PipedInputStream / PipedOutputStream可以解决此问题。效果很好。

基本上,messageReceived将我的字节转储到PipedOutputStream中,并且我的音频线程从PipedInputStream中读取并写入SourceDataLine中。

10-06 13:40