import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipException; import java.util.zip.ZipFile; import java.util.zip.ZipOutputStream; public class ZipGenerate { /** * 压缩成zip包 * * @param souceFileName * @param destFileName */ private void zip(String souceFileName, String destFileName){ try { File file = new File(souceFileName); if(file.exists()){ FileOutputStream fileOut = new FileOutputStream(destFileName); ZipOutputStream out = new ZipOutputStream(fileOut); String base=""; traverseFile(file, out,base); out.close(); fileOut.close(); } } catch (IOException e) { e.printStackTrace(); } } /** * 循环遍历文件夹的所有文件 * @param file * @param out * @param base * @throws IOException */ private void traverseFile(File file, ZipOutputStream out,String base) throws IOException { if (file.isDirectory()) { File[] files = file.listFiles(); base=base+file.getName()+"/"; out.putNextEntry(new ZipEntry(base)); // System.out.println(base); for (File f : files) { traverseFile(f, out,base); } } else { base=base+file.getName(); // System.out.println(base); out.putNextEntry(new ZipEntry(base)); FileInputStream in = new FileInputStream(file); int b; byte[] by = new byte[1024]; while ((b = in.read(by)) != -1) { out.write(by, 0, b); } in.close(); } } /** * 解压缩文件 * @param zipname */ private void unzip(String zipname){ try { File zipFile = new File(zipname); String dictory_name=zipFile.getParent(); File top_dictory=new File(dictory_name); if(!top_dictory.exists()){ top_dictory.mkdirs(); } ZipFile zip = new ZipFile(zipFile); for (Enumeration entries=zip.entries(); entries.hasMoreElements();) { ZipEntry entry = (ZipEntry)entries.nextElement(); if(entry.isDirectory()){ File dictory=new File(dictory_name+File.separator+entry.getName()); if(!dictory.exists()){ dictory.mkdirs(); } }else{ InputStream in = zip.getInputStream(entry); String path=dictory_name+File.separator+entry.getName(); File file=new File(path); OutputStream out = new FileOutputStream(file); int b; byte[] by = new byte[1024]; while ((b = in.read(by)) != -1) { out.write(by, 0, b); } out.close(); in.close(); } } } catch (ZipException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { // File f=new File("E:\\temp\\hello.zip"); // f.delete(); ZipGenerate z = new ZipGenerate(); //压缩 // z.zip("E:\\temp\\hello", "E:\\temp\\hello.zip"); //解压 z.unzip("E:\\temp\\hello.zip"); } }
java解压缩zip
猜你喜欢
转载自itace.iteye.com/blog/1816851
今日推荐
周排行