Avatar
0
Thân Nam Teacher
Thân Nam Teacher
Nén nhiều file tài liệu
Em chào mọi người

Cho em hỏi là làm cách nào để giảm kích thước file sau khi nén ạ.

Em nén xong thì kích thước file tài liệu bằng tất kích thước các file cộng lại. Code:

public void zipFiles(){

    FileOutputStream fos = null;
    ZipOutputStream zipOut = null;
    FileInputStream fis = null;
    try {
        File folder = new File("D:\\Data\\attachment");
        File[] attachFiles = folder.listFiles();

        fos = new FileOutputStream("C:\\Users\\admin\\Desktop\\tai-lieu\\testing.zip");
        zipOut = new ZipOutputStream(new BufferedOutputStream(fos));
        for(File file: attachFiles){
            fis = new FileInputStream(file);
            ZipEntry ze = new ZipEntry(file.getName());
            System.out.println("Zipping the file: "+file.getName());
            zipOut.putNextEntry(ze);
            byte[] tmp = new byte[1024];
            int size = 0;
            while((size = fis.read(tmp)) != -1){
                zipOut.write(tmp, 0, size);
            }
            zipOut.flush();
            fis.close();
        }
        zipOut.close();
        System.out.println("Done... Zipped the files...");
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally{
        try{
            if(fos != null) fos.close();
        } catch(Exception ex){

        }
    }
}
  • Answer
java zip file
Remain: 5
1 Answer
Avatar
monkey Teacher
monkey Teacher
Anh thấy của anh vẫn giảm được size, chắc tại số lượng file của em quá ít nên khi zip vào nó không đủ để tạo ra sự thay đổi chăng?

  • 0
  • Reply
Anh ơi làm sao để lấy File zip trả ra đó để gửi vào tài liệu khi gửi Mail ạ. Hiện tại em đang xuất fle ra 1 ổ mặc định còn xuất ra file để thêm vào tài liệu đính kèm email thì mình làm cách nào ạ  –  Thân Nam 1672701890000
Đây là một câu hỏi khác, em tạo riêng nhé.  –  monkey 1672702363000