tôi sử dụng mã này để tạo ra một .zip với một danh sách các tập tin:Kích thước bộ đệm để tạo tệp nén .zip bằng Java là gì?
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();
Tôi không biết làm thế nào các thuật toán nén và ZipOutputStream hoạt động, nếu nó viết cái gì đó trước khi tôi đọc và gửi cho 'ZOS 'tất cả dữ liệu, tệp kết quả có thể khác về kích thước byte so với nếu tôi chọn kích thước bộ đệm khác.
nói cách khác tôi không biết nếu các thuật toán cũng giống như:
đọc dữ liệu -> xử lý dữ liệu -> CREATE ZIP
hoặc
READ đoạn DATA-- > QUY TRÌNH CHỮ BIẾN DỮ LIỆU CHỮ KÝ -> CHỮ NHẠC VIẾT TRONG .ZIP -> | ^ ------------------------------------------------ -------------------------------------------------- ---------------------------
Nếu trường hợp này xảy ra, kích thước bộ đệm nào là tốt nhất?
Cập nhật:
Tôi đã kiểm tra mã này, thay đổi kích thước bộ đệm 1024-64, và nén các tập tin giống nhau: với 1024 byte file kết quả 80 KB là 3 byte nhỏ hơn với 64 byte đệm. Kích thước bộ đệm nào tốt nhất để tạo ra tệp .zip nhỏ nhất trong thời gian khó khăn nhất?
Tôi chấp nhận câu trả lời này vì nó cho thấy kích thước bộ đệm không ảnh hưởng đến kích thước kết quả có ý nghĩa nhưng kích thước từ điển và cửa sổ trượt – Telcontar