package com.aspire.reportPlatform.webagent;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
/**
*
* @author Jhonson Lee
* 实现各种路径的解压缩, 包括 url 和 绝对路径
*/
public class UnZipUtil {
/**
*
* @param sourceFile 源文件
* @param outputFolder 输出的目标目录
*/
public static void unZipResources(String sourceFile,String outputFolder){
String archivePath = sourceFile;
ZipInputStream zis = null;
ZipEntry entry = null;
URLConnection con = null;
String rdpOutputFolder = outputFolder;
File configFile=new File(rdpOutputFolder);
if(!configFile.exists()) {
configFile.mkdir();
}
try {
con = (new URL(archivePath)).openConnection();
con.setUseCaches(false);
con.connect();
zis = new ZipInputStream(con.getInputStream());
while ((entry = zis.getNextEntry()) != null){
if (entry.isDirectory()) {
String name = entry.getName();
name = name.substring(0, name.length() - 1);
File f = new File(rdpOutputFolder + File.separator + name);
f.mkdir();
} else {
unZipResource(zis, entry.getName(),rdpOutputFolder);
}
}
} catch (IOException ioe) {
StatusPanel.getStatusPanelInstance().setStatus((byte) 8);
ioe.printStackTrace();
// LogFile.getInstance().print(0,
// "WebAgentApplet.installLibraries()",
// "install have IOException ");
}catch(Exception e){
e.printStackTrace();
}finally {
con = null;
try {
zis.close();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
}
/**
*
* @param archive
* @param configResourceName
* @param path
*/
private static void unZipResource(ZipInputStream archive, String configResourceName,String path){
BufferedOutputStream out = null;
byte buffer[] = new byte[1024];
int count = 0;
String configFullPathName = path + File.separator + configResourceName;
try {
out = new BufferedOutputStream(
new FileOutputStream(configFullPathName));
while ((count = archive.read(buffer)) > 0)
out.write(buffer, 0, count);
out.close();
} catch (IOException e) {
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
try {
out.close();
} catch (IOException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
}
}
}
}