ZipFileUtil.java package cn.lmy.utils;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.zip.ZipEntry;import java.util.zip.ZipInputStream;import java.util.zip.ZipOu
package cn.lmy.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream; public class ZipFileUtil { public static final String entrySplit = "/"; public static byte[] buff = new byte[8192]; public synchronized static void unzip(String zipFile, String outDir) throws IOException { ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile)); ZipEntry ze; while ((ze = zis.getNextEntry()) != null) { System.out.println(ze.getName()); File ef = new File(outDir + entrySplit + ze.getName()); if (ze.isDirectory()) { ef.mkdirs(); continue; } ef.getParentFile().mkdirs(); FileOutputStream fis = new FileOutputStream(ef); for (int read = zis.read(buff); read > 0; read = zis.read(buff)) { fis.write(buff, 0, read); } fis.close(); } zis.close(); } private static void zip(String workDir, String fileName, ZipOutputStream zos) throws IOException { File sourceFile; if(workDir != null){ sourceFile = new File(workDir + entrySplit + fileName); }else{ sourceFile = new File(fileName); } if (!sourceFile.exists()) { return; } ZipEntry ze = new ZipEntry(fileName); if (sourceFile.isDirectory()) { zos.putNextEntry(new ZipEntry(fileName + entrySplit)); String[] subFileList = sourceFile.list(); for (String subFile : subFileList) { zip(workDir, fileName + entrySplit + subFile, zos); } } else { zos.putNextEntry(ze); FileInputStream fis = new FileInputStream(sourceFile); long len = 0; for (int read = fis.read(buff); read > 0; read = fis.read(buff)) { zos.write(buff, 0, read); len += read; } ze.setSize(len); fis.close(); } } public synchronized static void zip(String workDir, String[] files, String outZipFile) throws IOException { File outFile = new File(outZipFile); //outFile.deleteOnExit(); ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(outFile)); for (String fileName : files) { zip(workDir, fileName, zos); } zos.finish(); zos.closeEntry(); } /** * @param args */ public static void main(String[] args) throws Exception { String dir = "F:/zip/cn.lmy.util"; String[] files = new String[] { "dhis", "dhis_new" }; String outFile = dir + "/apps.zip"; zip(dir, files, outFile); unzip(outFile, dir + "/apps"); } }