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