Voorbeeld van het uitpakken van een Java-bestand

Welkom bij Java Unzip Bestandsvoorbeeld. In de laatste post hebben we geleerd hoe je bestanden en mappen kunt zippen in Java, hier zullen we hetzelfde zipbestand uitpakken dat is gemaakt vanuit een map naar een andere uitvoermap.

Java Unzip Bestand

Om een zipbestand uit te pakken, moeten we het zipbestand lezen met ZipInputStream en vervolgens alle ZipEntry één voor één lezen. Gebruik vervolgens FileOutputStream om ze naar het bestandssysteem te schrijven. We moeten ook de uitvoermap maken als deze niet bestaat en eventuele geneste mappen die aanwezig zijn in het zipbestand. Hier is het java unzip bestandsprogramma dat het eerder gemaakte tmp.zip uitpakt naar de uitvoermap.

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);
        // maak de uitvoermap aan als deze niet bestaat
        if(!dir.exists()) dir.mkdirs();
        FileInputStream fis;
        // buffer voor het lezen en schrijven van gegevens naar bestand
        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());
                // maak mappen aan voor submappen 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();
                // sluit deze ZipEntry
                zis.closeEntry();
                ze = zis.getNextEntry();
            }
            // sluit de laatste ZipEntry
            zis.closeEntry();
            zis.close();
            fis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
    }

}

Zodra het programma is voltooid, hebben we alle inhoud van het zipbestand in de uitvoermap met dezelfde maphiërarchie. De uitvoer van het bovenstaande programma is:

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

Dat is alles over het java unzip bestandsvoorbeeld.

Source:
https://www.digitalocean.com/community/tutorials/java-unzip-file-example