java unzip 文件包

package Zip;

import java.io.BufferedOutputStream;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.util.Enumeration;

import org.apache.tools.zip.ZipEntry;

import org.apache.tools.zip.ZipFile;

public class ExtraExcel {

private ZipFile zipFile;

/**

* 解压zip包

* @param zipFilePath zip文件路径

* @param targetPath 解压缩到的位置,如果为null或空字符串则默认解压缩到跟zip包同目录跟zip包同名的文件夹下

*/

public void unZip(String zipFilePath,String targetPath){//unZipfileName需要解压的zip文件名

OutputStream fileOut;

File file;

InputStream inputStream;

try{

//生成一个zip的文件

this.zipFile = new ZipFile(zipFilePath);

String directoryPath = "";

if(null == targetPath || "".equals(targetPath)){

directoryPath = zipFilePath.substring(0,zipFilePath.lastIndexOf("."));

}else{

directoryPath = targetPath;

}

//遍历zipFile中所有的实体,并把他们解压出来

for(Enumeration entries = this.zipFile.getEntries(); entries.hasMoreElements();){

ZipEntry entry = (ZipEntry)entries.nextElement();

//生成他们解压后的一个文件

file = new File(entry.getName());

//文件还是目录的判断 isDirectory()=true<目录>

if(entry.isDirectory()){

String directoryPath1 = directoryPath + File.separator + file;

System.out.println(directoryPath1);

File file1 = new File(directoryPath1);

if(!file1.exists()){

file1.mkdirs();

}

continue;

}else{

File targetFile = buildFile(directoryPath + File.separator + file, false);

System.out.println(targetFile);

fileOut = new BufferedOutputStream(new FileOutputStream(targetFile));

inputStream = this.zipFile.getInputStream(entry);

//开辟缓冲区

byte[] buffer = new byte[1024];

int readLen = 0;

while((readLen = inputStream.read(buffer, 0, 1024)) >= 0){

fileOut.write(buffer, 0, readLen);

}

fileOut.close();

inputStream.close();

}

}

this.zipFile.close();

}catch(IOException ioe){

ioe.printStackTrace();

}

}

/**

* 生产文件 如果文件所在路径不存在则生成路径

* @param fileName 文件名 带路径

* @param isDirectory 是否为路径

* @return

*/

public static File buildFile(String fileName, boolean isDirectory) {

File target = new File(fileName);

if (isDirectory) {

target.mkdirs();

} else {

if (!target.getParentFile().exists()) {

target.getParentFile().mkdirs();

target = new File(target.getAbsolutePath());

}

}

return target;

}

public static void main(String[] args) {

String filePath = "C:\\Users\\Documents\\1111.zip";

String destination = "C:\\Users\\Documents\\work";

File file = new File(filePath);

String fileName = file.getName();

ExtraExcel ee = new ExtraExcel();

ee.unZip(filePath,destination);

}

}