Làm thế nào để nén(zip) một file bằng lớp ZipOutputStream class in java? (How to zip a single file using ZipOutputStream class in java?)






Bài viết này sẽ hướng dẫn cách sử dụng lớp ZipOutputStream(class ZipOutputStream) để nén(zip) một file thành một tâp tin nén(zip) trong ngôn ngữ lập trình Java.






Đầu tiên ta cần chuẩn một tập tin(file) văn bảng(text) hoặc hình ảnh(image) gì đó để thực hiện ví dụ này. Nhưng trong hình dưới tôi có một hình ảnh tên "anime_chibi_girl.jpg" như sau:


Và tôi sẽ zip nó trong mã ví dụ bên dưới.

/**
 * @(#)ZipSingleFileUsingZipOutputStream.java
 *
 * ZipSingleFileUsingZipOutputStream application
 *
 * @author developer.bnson@gmail.com
 * @version 1.00 2014/3/8
 */

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipSingleFileUsingZipOutputStream {
   
    public static void main(String[] args) {
       
        ZipSingleFileUsingZipOutputStream mainRun = new ZipSingleFileUsingZipOutputStream();
        mainRun.zipFile("D:\\Z-Test\\Demo\\anime_chibi_girl.jpg");

    }
   
    public void zipFile(String filePath) {
        
        FileOutputStream fos = null;
        ZipOutputStream zipOut = null;
        FileInputStream fis = null;
       
        try {
           
            fos = new FileOutputStream("D:\\Z-Test\\Demo\\anime_chibi_girl.zip");
            zipOut = new ZipOutputStream(new BufferedOutputStream(fos));
           
            File input = new File(filePath);
            fis = new FileInputStream(input);
           
            ZipEntry ze = new ZipEntry(input.getName());
            System.out.println("Zipping the file: "+input.getName());
           
            zipOut.putNextEntry(ze);
           
            byte[] tmp = new byte[4*1024];
            int size = 0;
           
            while((size = fis.read(tmp)) != -1){
           
                zipOut.write(tmp, 0, size);
               
            }
           
            System.out.println("-- Complete.");
           
            zipOut.flush();
            zipOut.close();
           
        } catch (FileNotFoundException e) {
           
            e.printStackTrace();
           
        } catch (IOException e) {
           
            e.printStackTrace();
           
        } finally{
            try{
               
                if(fos != null) fos.close();
                if(fis != null) fis.close();
               
            } catch(Exception ex){
                
            }
        }
       
    }
       
   
}

Sau khi chạy ứng dụng bạn sẽ nhận được thông báo kết quả như sau:
Zipping the file: anime_chibi_girl.jpg
-- Complete.

Quay trở lại thư mục chưa hình hoặc thư mục mà bạn thiết lập để lưu file zip, bạn sẽ thấy kết quả như sau.


Bạn có thể tham khảo thêm bài viết hướng dẫn Unzip file.

Reference
http://stackoverflow.com/


























No comments:

Post a Comment