import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import org.apache.log4j.Logger;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Zip;
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
public class ZIPUtil {
private static Logger log =
Logger.getLogger(ZIPUtil.class);
public static String
doZip(String srcPathName,String resultPath) {
try{
File srcdir = new File(srcPathName);
if (!srcdir.exists()) {
// throw new
RuntimeException(srcPathName + "不存在!");
log.info(srcPathName + "不存在!");
return "1";
}
File result=new File(resultPath);
if(!result.exists()){
result.mkdir();
}
Project prj = new Project();
Zip zip = new Zip();
zip.setProject(prj);
zip.setDestFile(new
File(resultPath+File.separator+srcPathName.substring(srcPathName.lastIndexOf("\\")+1,
srcPathName.length())+".zip"));
FileSet fileSet = new FileSet();
fileSet.setProject(prj);
fileSet.setDir(srcdir);
//fileSet.setIncludes("**
public static String unZip(String unZipfile, String
resultPath) {// unZipfileName需要解压的zip文件名
File srcdir = new File(unZipfile);
if (!srcdir.exists()) {
// throw new
RuntimeException(unZipfile + "不存在!");
log.info(unZipfile + "不存在!");
return "1";
}
String
extName=unZipfile.substring(unZipfile.lastIndexOf("."));
if(!".zip".equalsIgnoreCase(extName)){
log.info(unZipfile + "不是.zip格式文件");
return "2";
}
FileOutputStream fileOut = null;
File file;
ZipFile zipFile =null;
InputStream inputStream = null;
int readedBytes;
byte[] buf=new
byte[512];
try {
zipFile = new ZipFile(unZipfile);
for (Enumeration entries = zipFile.getEntries(); entries
.hasMoreElements();) {
ZipEntry entry = (ZipEntry) entries.nextElement();
file = new File(resultPath + File.separator +
entry.getName());
if (entry.isDirectory()) {
file.mkdirs();
} else {
// 如果指定文件的目录不存在,则创建之.
File parent = file.getParentFile();
if (!parent.exists()) {
parent.mkdirs();
}
inputStream = zipFile.getInputStream(entry);
fileOut = new FileOutputStream(file);
while ((readedBytes = inputStream.read(buf)) > 0) {
fileOut.write(buf, 0, readedBytes);
}
}
}
return "0";
} catch (Exception ioe) {
log.error(unZipfile + "解压发生异常:");
log.error(ioe);
ioe.printStackTrace();
return "3";
}finally{
if(fileOut!=null){
try {
fileOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(inputStream!=null){
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(zipFile!=null){
try {
zipFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}