Java 对ChannelBuffer的读写工作不正常

Java 对ChannelBuffer的读写工作不正常,java,netty,httpresponse,Java,Netty,Httpresponse,我想读取HttpResponse中包含的ChannelBuffer对象中存储的二进制数据。我已尝试使用以下代码从通道缓冲区读取和保存,但它不起作用。读取存储在通道缓冲区中的二进制数据的正确方法是什么 ChannelBuffer chanBuff = response.getContent(); FileOutputStream outputStream = new FileOutputStream(outputFileName); outputStream.write(chanBu

我想读取
HttpResponse
中包含的
ChannelBuffer
对象中存储的二进制数据。我已尝试使用以下代码从
通道缓冲区
读取和保存,但它不起作用。读取存储在通道缓冲区中的二进制数据的正确方法是什么

ChannelBuffer chanBuff = response.getContent();
FileOutputStream outputStream = new FileOutputStream(outputFileName);       
outputStream.write(chanBuff.array());                   
outputStream.close();
上述代码从
chanBuff.array()
UnsupportedOperationException
)引发异常。不确定从
ChannelBuffer
复制字节数组的正确方法是什么

存储此内容(例如媒体)的目的是保存和转码它。但是,我始终将保存的文件大小设置为零

我还打算通过
ChannelBuffer
将处理后的数据复制回HTTP响应。为了写回HTTP消息,我有以下代码。此代码有时会抛出
ArrayOutOfBoundException
。这里的正确方法是什么

ChannelBuffer dynamicBuffer = dynamicBuffer();
dynamicBuffer.clear();
dynamicBuffer.ensureWritableBytes(fileLen);

ChannelBufferOutputStream buffOutStream = new ChannelBufferOutputStream(dynamicBuffer);

byte[] byteBuf = new byte[4096];
int bytesRead = -1;
int offSet = 0;

while ((bytesRead = inStream.read(byteBuf)) != -1) {
    buffOutStream.write(byteBuf, offSet, bytesRead);
    offSet += bytesRead;
}

response.setContent(EMPTY_BUFFER);
response.setContent(buffOutStream.buffer());
response.setHeader("Content-Type", contType);
response.setHeader("Content-Length", fileLen);   

这是正确的方法吗

在第二个示例中,不应不断增加偏移量。这是缓冲区中的偏移量,而不是文件。整个偏移量应使用零