การคลายไฟล์จากไฟล์ ZIP ใน Java

ต่อไปนี้เป็นหัวข้อเกี่ยวกับการคลายไฟล์จากไฟล์ ZIP ใน Java ชึ่งมีหลักการทั่วไปดังนี้. 

1. อ่าน ZIP ไฟล์ด้วย "ZipInputStream"
2. ดึงไฟล์ต่างๆให้ "ZipEntry" จัดการจากนั้นเขียนไฟล์ออกด้วย "FileOutputStream" 1

ตัวอย่าง
ในตัวอย่างเราจะทำการอ่านไฟล์ zip จาก "C:\\users\\nopphanan7\\Directory1.zip" และทำการคลาย zip ไปไว้ในโฟรเดอร์ "C:\\users\\nopphanan7\\outputzip".
package demo.compress;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public class DecompressZIPExample {

    List fileList;
    private static final String INPUT_ZIP_FILE = "C:\\users\\nopphanan7\\Directory1.zip";
    private static final String OUTPUT_FOLDER = "C:\\users\\nopphanan7\\outputzip";

    /**
     * @param args
     */
    public static void main(String[] args) {
        DecompressZIPExample unZip = new DecompressZIPExample();
        unZip.unZipIt(INPUT_ZIP_FILE, OUTPUT_FOLDER);

    }

    /**
     * Unzip it
     * 
     * @param zipFile
     *            input zip file
     * @param output
     *            zip file output folder
     */
    public void unZipIt(String zipFile, String outputFolder) {

        byte[] buffer = new byte[1024];

        try {

            // create output directory is not exists
            File folder = new File(OUTPUT_FOLDER);
            if (!folder.exists()) {
                folder.mkdir();
            }

            // get the zip file content
            ZipInputStream zis = new ZipInputStream(
                    new FileInputStream(zipFile));
            // get the zipped file list entry
            ZipEntry ze = zis.getNextEntry();

            while (ze != null) {

                String fileName = ze.getName();
                File newFile = new File(outputFolder + File.separator
                        + fileName);

                System.out.println("file unzip : " + newFile.getAbsoluteFile());

                // create all non exists folders
                // else you will hit FileNotFoundException for compressed folder
                new File(newFile.getParent()).mkdirs();

                FileOutputStream fos = new FileOutputStream(newFile);

                int len;
                while ((len = zis.read(buffer)) > 0) {
                    fos.write(buffer, 0, len);
                }

                fos.close();
                ze = zis.getNextEntry();
            }

            zis.closeEntry();
            zis.close();

            System.out.println("Decompress zip file is done.");

        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}
ผลลัพธ์ที่ได้คือ
file unzip : C:\users\nopphanan7\outputzip\FIO.jpg
file unzip : C:\users\nopphanan7\outputzip\photo.jpg
file unzip : C:\users\nopphanan7\outputzip\photo2.jpg
file unzip : C:\users\nopphanan7\outputzip\the_dark_knight.jpg
file unzip : C:\users\nopphanan7\outputzip\ubuntu-black-1440x900.jpg
Decompress zip file is done.

About Nop

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment

0 comments:

Post a Comment