/**
解压
**/
public class ExtractAllFiles {
public static int extractAllFiles(String unZipfile, String afterunZipfile, String password) {
try {
int reuslt = 1;
ZipFile zipFile = new ZipFile(unZipfile);
zipFile.setRunInThread(true);
//如果 压缩文件 是加密的 ,则 设置密码
if (zipFile.isEncrypted()) {
zipFile.setPassword(password);
}
ProgressMonitor progressMonitor = zipFile.getProgressMonitor();//开启压缩监听
//开始 解压(全部)
zipFile.extractAll(afterunZipfile);
System.out.println("开始解压=========="+progressMonitor.getState()+"解压结果"+progressMonitor.getResult());
//以下 为 监听过程,不影响 实际解压缩过程;
//开始解压时,状态码为 1:解压状态; 结果码为:0 正常状态; 进入 循环监听;
while (progressMonitor.getState() == ProgressMonitor.STATE_BUSY) {
switch (progressMonitor.getCurrentOperation()) {
case ProgressMonitor.OPERATION_NONE:
System.out.println("没有正在执行操作");
break;
case ProgressMonitor.OPERATION_ADD:
System.out.println("添加操作");
break;
case ProgressMonitor.OPERATION_EXTRACT:
System.out.println("提取操作"+" 解压 结果 "+progressMonitor.getResult());
break;
case ProgressMonitor.OPERATION_REMOVE:
System.out.println("删除操作");
break;
case ProgressMonitor.OPERATION_CALC_CRC:
System.out.println("Calcualting CRC");
break;
case ProgressMonitor.OPERATION_MERGE:
System.out.println("合并操作");
break;
default:
System.out.println("无效的操作");
break;
}
}
//若 解压时出现失败情况 则 结果码 变成2:失败状态;若解压正常,结果码 一直保持 0 状态;
reuslt = progressMonitor.getResult();
//如果 解压 不成功 ,则 删除 该文件
if(progressMonitor.getResult()!=0){
File file = new File(afterunZipfile);
// 路径为文件且不为空则进行删除
if (file.isFile() && file.exists()) {
file.delete();
}
}
System.out.println("Result++++++++++++++++++++: " + progressMonitor.getResult()+"--------"+progressMonitor.getState() );
return reuslt;
} catch (ZipException e) {
//出现异常 ,删除文件,返回 1 异常状态;
File file = new File(afterunZipfile);
// 路径为文件且不为空则进行删除
if (file.isFile() && file.exists()) {
file.delete();
}
e.printStackTrace();
return 1;
}
}
/**
* @param args
*/
public static void main(String[] args) {
String unZipfile = "C:\\Users\\Administrator\\Desktop\\ETC\\964ck20141025-28.zip";
String password = "123";
String afterunZipfile = "C:\\Users\\Administrator\\Desktop\\ETC\\28";
int reuslt = extractAllFiles(unZipfile, afterunZipfile, password);
System.out.println("完成结果:" + reuslt);
}
}