package com.common.util;
import java.io.*;
import java.util.ArrayList;
import java.util.zip.*;
public class UnZip {
public static int iCompressLevel; //壓縮比 取值範圍為0~9
public static boolean bOverWrite; //是否覆蓋同名檔案 取值範圍為True和False
private static ArrayList allFiles = new ArrayList();
public static String sErrorMessage;
public static ArrayList unZip(String zipPathFile, String DestPath) {
ArrayList allFileName = new ArrayList();
try {
//先指定壓縮檔的位置和檔名,建立FileInputStream對象
FileInputStream in = new FileInputStream(zipPathFile);
//將fins傳入ZipInputStream中
ZipInputStream zin = new ZipInputStream(in);
ZipEntry ent = null;
byte ch[] = new byte[256];
while ((ent = zin.getNextEntry()) != null) {
File zfile = new File(DestPath + ent.getName());
File fpath = new File(zfile.getParentFile().getPath());
if (ent.isDirectory()) {
if (!zfile.exists())
zfile.mkdirs();
zin.closeEntry();
} else {
if (!fpath.exists())
fpath.mkdirs();
FileOutputStream fouts = new FileOutputStream(zfile);
int i;
allFileName.add(zfile.getAbsolutePath());
while ((i = zin.read(ch)) != -1)
fouts.write(ch, 0, i);
zin.closeEntry();
fouts.close();
}
//System.out.println("解壓檔案: " + ent.getName() + zipPathFile);
}
in.close();
zin.close();
sErrorMessage = "OK";
} catch (Exception e) {
System.err.println("Extract error:" + e.getMessage());
sErrorMessage = e.getMessage();
}
allFiles.clear();
System.out.println("完成");
return allFileName;
}
public static void main(String[] args) {
UnZip.unZip("c://order_20.rar", "c://un//");
}
}