/**
* 解壓縮一個文件
*
* @param zipFile
* 要解壓的壓縮文件
* @param folderPath
* 解壓縮的目標目錄
* @param folderName
* 解壓縮的文件夾名稱
* @throws IOException
* 當解壓縮過程出錯時拋出
*/
public static void upZipFile(File zipFile, String folderPath,
String folderName) throws ZipException, IOException {
File desDir = new File(folderPath);
if (!desDir.exists()) {
desDir.mkdirs();
}
ZipFile zf = new ZipFile(zipFile);
String fileName = "";
for (Enumeration<?> entries = zf.entries(); entries.hasMoreElements();) {
ZipEntry entry = ((ZipEntry) entries.nextElement());
InputStream in = zf.getInputStream(entry);
fileName = entry.getName().substring(
entry.getName().indexOf('/') + 1);
String str = folderPath + File.separator + folderName + "/"
+ fileName;
str = new String(str.getBytes("8859_1"), "GB2312");
File desFile = new File(str);
if (!desFile.exists()) {
File fileParentDir = desFile.getParentFile();
if (!fileParentDir.exists()) {
fileParentDir.mkdirs();
}
desFile.createNewFile();
}
OutputStream out = new FileOutputStream(desFile);
byte buffer[] = new byte[1024];
int realLength;
while ((realLength = in.read(buffer)) > 0) {
out.write(buffer, 0, realLength);
}
in.close();
out.close();
}
}