ChannelBuffer
に含まれるオブジェクトに格納されているバイナリ データを読み取りたいですHttpResponse
。以下のコードを使用して から読み取って保存しようとしましたChannelBuffer
が、機能していません。チャネル バッファに格納されたバイナリ データを読み取る正しい方法は何ですか?
ChannelBuffer chanBuff = response.getContent();
FileOutputStream outputStream = new FileOutputStream(outputFileName);
outputStream.write(chanBuff.array());
outputStream.close();
上記のコードはchanBuff.array()
( UnsupportedOperationException
) から例外をスローします。からバイト配列をコピーする正しい方法がわかりませんChannelBuffer
。
このコンテンツ (メディアなど) を保存する目的は、保存してトランスコードすることです。ただし、保存されたファイルのサイズが一貫してゼロになっています。
また、処理されたデータを を介して HTTP 応答にコピーするつもりChannelBuffer
です。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);
これは正しいアプローチですか?