0
在測試期間,我使用基於netty的瀏覽器從服務器和客戶端之間加載了一個基於littleproxy的瀏覽器的JPG圖像。加載這個特定的圖像。通道緩衝區是CompositChannelBuffer。我正在閱讀以下方式,但無法正常工作。如何從CompositeChannelBuffer讀取?
if (chanBuff instanceof CompositeChannelBuffer) {
CompositeChannelBuffer compChanBuf = ((CompositeChannelBuffer) chanBuff);
int noOfComps = compChanBuf.numComponents();
List<ChannelBuffer> buffList = compChanBuf.decompose(0, noOfComps);
ListIterator<ChannelBuffer> itr = buffList.listIterator();
int offSet = 0;
int bytesRead = -1;
while (itr.hasNext()) {
ChannelBuffer buf = (ChannelBuffer) itr.next();
bytesRead = buf.array().length;
outputStream.write(buf.array(), offSet, bytesRead);
offSet += bytesRead;
}
}
我也嘗試了下面的代碼,但是這也無法寫入文件。
if (chanBuff instanceof CompositeChannelBuffer){
FileOutputStream outputStream = new FileOutputStream(outputFileName);
CompositeChannelBuffer compChanBuf = ((CompositeChannelBuffer) chanBuff);
int noOfComps = compChanBuf.numComponents();
compChanBuf.getBytes(0, outputStream, noOfComps);
ChannelBuffer dynamicBuf = dynamicBuffer();
compChanBuf.getBytes(0, dynamicBuf);
array = dynamicBuf.array();
outputStream.write(array);
}
閱讀CompositChannelBuffer的正確方法是什麼?
感謝諾曼。這工作!那麼我們在什麼情況下使用分解呢?只是想了解,因爲我已經觸及了該API,並且知道這一點很有用。再次感謝! – AnilJ
大部分時間你根本不需要投到CompositeChannelBuffer。它只是爲您提供一些更高級的操作,例如直接訪問索引x等的組件。 –