所以我有一個輸入流,我從中讀取一個較小的固定大小的緩衝區,我試圖在一個Runnable類中放氣。Java Deflater總是返回0問題
randomClass implements Runnable {
public void run() {
...
byte[] output = new Byte[FIXED];
Deflater deflater = new Deflater();
deflater.setInput(uncompressed);
deflater.setLevel(Deflater.DEFLATED);
int length = deflater.deflate(output);
...
}
}
我遇到的問題是,長度總是返回0,這意味着我需要更多的輸入根據文檔?不過,我已經檢查過,未壓縮的不是null。如何從輸出中獲取字節?
另外我相信我應該只在最後一個塊調用deflater.finish()。它是否正確?
即使我正在壓縮的塊不是來自輸入流的最後一個,仍應該調用finish()方法嗎? – bph
@bph我在答案中增加了更多內容。我認爲在之後調用'finish()'和'deflate(output)'之前,你需要添加所有的輸入。 –
即使我調用完成,compressedDataLength仍然爲0,並且具有該壓縮級別。 – bph