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中。