//需要用到的依赖
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.10.5</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
package com.qf.updatefile.utils;
import org.apache.commons.io.IOUtils;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
public class ZipUtil {
private static String folderName="";
public static void zip(String src, String zipdSrc) throws IOException{
zip(new File(src), new File(zipdSrc));
}
public static void zip(String src, File zipdSrc) throws IOException{
zip(new File(src), zipdSrc);
}
public static void zip(File src, String zipdSrc) throws IOException{
zip(src,new File(zipdSrc));
}
public static void zip(String src,String zipdSrc,String folerName){
ZipUtil.folderName=folerName;
}
public static void zip(File src,File zipdSrc,String folerName) throws IOException{
List<ZipEntry> ziplist=foreach(src);
ZipOutputStream out = new ZipOutputStream(zipdSrc);
for(ZipEntry zip: ziplist){
File file=new File(src.getParent(),folerName+File.separator+zip.getName());
out.putNextEntry(zip);
FileInputStream in=new FileInputStream(file);
byte[] buffer = new byte[1024 * 8];
for(int len=0; (len = in.read(buffer)) != -1;){
out.write(buffer,0,len);
}
in.close();
out.flush();
}
out.close();
}
public static void zip(File src,File zipdSrc)throws IOException{
List<ZipEntry> ziplist=foreach(src);
ZipOutputStream out=new ZipOutputStream(zipdSrc);
for(ZipEntry zip:ziplist){
File file=new File(src.getParent(),zip.getName());
out.putNextEntry(zip);
FileInputStream in=new FileInputStream(file);
byte [] buffer=new byte[1024*8];
for(int len=0; (len = in.read(buffer)) !=-1;){
out.write(buffer,0,len);
}
in.close();
out.flush();
}
out.close();
}
private static List<ZipEntry> foreach(File file) {
return foreach(file, "");
}
public static void unZip(File src,File out) throws IOException{
ZipFile zipFile=new ZipFile(src,"GB18030");
for(Enumeration<ZipEntry> entries = zipFile.getEntries(); entries.hasMoreElements();){
ZipEntry entry=entries.nextElement();
File file = new File(out,entry.getName());
if(entry.isDirectory()){
file.mkdirs();
}else {
File parent = file.getParentFile();
if (!parent.exists()) {
parent.mkdirs();
}
IOUtils.copy(zipFile.getInputStream(entry), new FileOutputStream(file));
}
}
zipFile.close();
}
public static void unZip(String src,String out) throws IOException{
unZip(new File(src), new File(out));
}
public static void unZip(File src,String out) throws IOException{
unZip(src, new File(out));
}
public static void unZip(String src,File out)throws IOException{
unZip(new File(src), out);
}
private static List<ZipEntry> foreach(File file, String path) {
List<ZipEntry> list = new ArrayList<ZipEntry>();
if (file.isDirectory()) {
path += file.getName() + File.separator;
for (File fo : file.listFiles()) {
list.addAll(foreach(fo, path));
}
} else if (file.isFile()) {
list.add(new ZipEntry(path.replace(folderName, "")
+ file.getName()));
}
return list;
}
public static void main(String[] args) throws Exception {
ZipUtil.unZip("D:\\office\\office.zip","D:\\office\\解压缩测试");
}
}