package com.zheng.common.util; import java.io.*; import java.util.Enumeration; import java.util.jar.JarEntry; import java.util.jar.JarFile; /** * Created by shuzheng on 2016/12/18. */ public class JarUtil { /** * 解压jar文件到指定目录 * @param fileName * @param outputPath */ public static synchronized void decompress(String fileName, String outputPath) { // 保证输出路径为目录 if (!outputPath.endsWith(File.separator)) { outputPath += File.separator; } // 如果不存在输出目录,则创建 File dir = new File(outputPath); if (!dir.exists()) { dir.mkdirs(); } // 解压到输出目录 JarFile jf = null; try { jf = new JarFile(fileName); for (Enumeration<JarEntry> e = jf.entries(); e.hasMoreElements(); ) { JarEntry je = e.nextElement(); String outFileName = outputPath + je.getName(); File f = new File(outFileName); if (je.isDirectory()) { if (!f.exists()) { f.mkdirs(); } } else { File pf = f.getParentFile(); if (!pf.exists()) { pf.mkdirs(); } InputStream in = jf.getInputStream(je); OutputStream out = new BufferedOutputStream( new FileOutputStream(f)); byte[] buffer = new byte[2048]; int nBytes; while ((nBytes = in.read(buffer)) > 0) { out.write(buffer, 0, nBytes); } out.flush(); out.close(); in.close(); } } } catch (Exception e) { System.out.println("解压" + fileName + "出错!" + e.getMessage()); } finally { if (jf != null) { try { jf.close(); } catch (IOException e) { e.printStackTrace(); } } } } }