/**
* 解压缩功能.
* 将zipFile文件解压到folderPath目录下.
* @throws Exception*/
public static intupZipFile(File zipFile, String folderPath) throws ZipException,IOException {
ZipFile zfile= newZipFile(zipFile);
Enumeration> zList =zfile.entries();
ZipEntry ze=null;byte[] buf=new byte[1024];while(zList.hasMoreElements()){
ze=(ZipEntry)zList.nextElement();if(ze.isDirectory()){
String dirstr= folderPath +ze.getName();//dirstr.trim();
dirstr = new String(dirstr.getBytes("8859_1"), "GB2312");
File f=newFile(dirstr);
f.mkdir();continue;
}
OutputStream os=new BufferedOutputStream(newFileOutputStream(getRealFileName(folderPath, ze.getName())));
InputStreamis=newBufferedInputStream(zfile.getInputStream(ze));int readLen=0;while ((readLen=is.read(buf, 0, 1024))!=-1) {
os.write(buf,0, readLen);
}is.close();
os.close();
}
zfile.close();return 0;
}/**
* 给定根目录,返回一个相对路径所对应的实际文件名.
* @param baseDir 指定根目录
* @param absFileName 相对路径名,来自于ZipEntry中的name
* @return java.io.File 实际的文件*/
public staticFile getRealFileName(String baseDir, String absFileName) {
String[] dirs=absFileName.split("/");
File ret=newFile(baseDir);
String substr= null;if(dirs.length>1){for (int i = 0; i < dirs.length-1;i++) {
substr=dirs[i];try{//substr.trim();
substr = new String(substr.getBytes("8859_1"), "GB2312");
}catch(UnsupportedEncodingException e) {
e.printStackTrace();
}
ret=newFile(ret, substr);
}if(!ret.exists())
ret.mkdirs();
substr= dirs[dirs.length-1];try{//substr.trim();
substr = new String(substr.getBytes("8859_1"), "GB2312");
}catch(UnsupportedEncodingException e) {
e.printStackTrace();
}
ret=newFile(ret, substr);returnret;
}returnret;
}