我用這個代碼創建的.zip文件用的列表:使用Java創建.zip壓縮文件的緩衝區大小是多少?
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile));
for (int i=0;i<srcFiles.length;i++){
String fileName=srcFiles[i].getName();
ZipEntry zipEntry = new ZipEntry(fileName);
zos.putNextEntry(zipEntry);
InputStream fis = new FileInputStream(srcFiles[i]);
int read;
for(byte[] buffer=new byte[1024];(read=fis.read(buffer))>0;){
zos.write(buffer,0,read);
}
fis.close();
zos.closeEntry();
}
zos.close();
我不知道的zip算法和ZipOutputStream是如何工作的,如果它之前,我讀寫的東西發送至「ZOS '所有的數據,結果文件的字節大小可能會不同於選擇另一個緩衝區大小。
換句話說我不知道該算法是這樣的:
讀數據 - >加工數據 - >創建.ZIP
或
數據 - 讀CHUNK >處理數據塊 - >在.ZIP中寫入數據塊 - > | ^ ------------------------------------------------ -------------------------------------------------- ---------------------------
如果是這樣的話,什麼緩衝區大小是最好的?
更新:
我已經測試此代碼,改變緩衝大小從1024到64和壓縮和解相同的文件:與1024字節的80 KB結果文件比用64個字節緩衝器更小3個字節。在最大的時間裏生成最小的.zip的最佳緩衝區大小是多少?
我接受這個答案,因爲它顯示緩衝區大小不會顯着影響結果大小,但字典大小和滑動窗口 – Telcontar 2008-10-14 15:16:34