웹사이트 검색

Java 압축 해제 파일 예


Java 압축 해제 파일 예제에 오신 것을 환영합니다. 지난 포스트에서 우리는 java에서 파일과 디렉토리를 압축하는 방법을 배웠습니다. 여기서는 디렉토리에서 생성된 동일한 zip 파일을 다른 출력 디렉토리로 압축 해제합니다.

자바 압축 해제 파일

zip 파일의 압축을 풀려면 ZipInputStream으로 zip 파일을 읽은 다음 모든 ZipEntry를 하나씩 읽어야 합니다. 그런 다음 FileOutputStream을 사용하여 파일 시스템에 씁니다. 출력 디렉토리가 존재하지 않고 zip 파일에 중첩 디렉토리가 있는 경우 출력 디렉토리도 생성해야 합니다. 다음은 이전에 생성된 tmp.zip을 출력 디렉토리에 압축 해제하는 java unzip 파일 프로그램입니다.

package com.journaldev.files;

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

public class UnzipFiles {

    public static void main(String[] args) {
        String zipFilePath = "/Users/pankaj/tmp.zip";
        
        String destDir = "/Users/pankaj/output";
        
        unzip(zipFilePath, destDir);
    }

    private static void unzip(String zipFilePath, String destDir) {
        File dir = new File(destDir);
        // create output directory if it doesn't exist
        if(!dir.exists()) dir.mkdirs();
        FileInputStream fis;
        //buffer for read and write data to file
        byte[] buffer = new byte[1024];
        try {
            fis = new FileInputStream(zipFilePath);
            ZipInputStream zis = new ZipInputStream(fis);
            ZipEntry ze = zis.getNextEntry();
            while(ze != null){
                String fileName = ze.getName();
                File newFile = new File(destDir + File.separator + fileName);
                System.out.println("Unzipping to "+newFile.getAbsolutePath());
                //create directories for sub directories in zip
                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();
                //close this ZipEntry
                zis.closeEntry();
                ze = zis.getNextEntry();
            }
            //close last ZipEntry
            zis.closeEntry();
            zis.close();
            fis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
    }

}

프로그램이 완료되면 동일한 디렉터리 계층 구조를 가진 출력 폴더에 모든 zip 파일 내용이 있습니다. 위 프로그램의 출력은 다음과 같습니다.

Unzipping to /Users/pankaj/output/.DS_Store
Unzipping to /Users/pankaj/output/data/data.dat
Unzipping to /Users/pankaj/output/data/data.xml
Unzipping to /Users/pankaj/output/data/xmls/project.xml
Unzipping to /Users/pankaj/output/data/xmls/web.xml
Unzipping to /Users/pankaj/output/data.Xml
Unzipping to /Users/pankaj/output/DB.xml
Unzipping to /Users/pankaj/output/item.XML
Unzipping to /Users/pankaj/output/item.xsd
Unzipping to /Users/pankaj/output/ms/data.txt
Unzipping to /Users/pankaj/output/ms/project.doc

자바 압축 해제 파일 예제에 관한 모든 것입니다.