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(); } } } }