Java解压缩文件示例
时间:2020-02-23 14:34:35 来源:igfitidea点击:
欢迎使用Java解压缩文件示例。
在上一篇文章中,我们学习了如何在Java中压缩文件和目录,这里我们将从目录创建的相同zip文件解压缩到另一个输出目录。
Java解压缩文件
要解压缩一个zip文件,我们需要使用ZipInputStream
读取该zip文件,然后逐个读取所有ZipEntry
。
然后使用FileOutputStream
将它们写入文件系统。
如果输出目录不存在,并且zip文件中存在任何嵌套目录,我们还需要创建该目录。
这是一个Java解压缩文件程序,它将先前创建的tmp.zip
解压缩到输出目录。
package com.theitroad.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/hyman/tmp.zip"; String destDir = "/Users/hyman/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/hyman/output/.DS_Store Unzipping to /Users/hyman/output/data/data.dat Unzipping to /Users/hyman/output/data/data.xml Unzipping to /Users/hyman/output/data/xmls/project.xml Unzipping to /Users/hyman/output/data/xmls/web.xml Unzipping to /Users/hyman/output/data.Xml Unzipping to /Users/hyman/output/DB.xml Unzipping to /Users/hyman/output/item.XML Unzipping to /Users/hyman/output/item.xsd Unzipping to /Users/hyman/output/ms/data.txt Unzipping to /Users/hyman/output/ms/project.doc