java zip工具类
package com.dmx.recmanager.action;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.Enumeration;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.tools.zip.ZipEntry;import org.apache.tools.zip.ZipFile;import org.apache.tools.zip.ZipOutputStream;public class ZipUtils {static final int BUFFER = 1024;public static void main(String[] args) {try {unZip("E:\\epg.zip", "E:\\epg_Temp\\");//readEpgFile("D:\\epg");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void zip(String sourceDir, String zipFile) {OutputStream os;try {os = new FileOutputStream(zipFile);BufferedOutputStream bos = new BufferedOutputStream(os);ZipOutputStream zos = new ZipOutputStream(bos);File file = new File(sourceDir);String basePath = null;if (file.isDirectory()) {basePath = file.getPath();} else {basePath = file.getParent();}zipFile(file, basePath, zos);zos.closeEntry();zos.close();} catch (Exception e) {e.printStackTrace();}}/*** @param source* @param basePath* @param zos* @throws IOException*/private static void zipFile(File source, String basePath,ZipOutputStream zos) {File[] files = new File[0];if (source.isDirectory()) {files = source.listFiles();} else {files = new File[1];files[0] = source;}String pathName;byte[] buf = new byte[1024];int length = 0;try {for (File file : files) {if (file.isDirectory()) {pathName = file.getPath().substring(basePath.length() + 1)+ "/";zos.putNextEntry(new ZipEntry(pathName));zipFile(file, basePath, zos);} else {pathName = file.getPath().substring(basePath.length() + 1);InputStream is = new FileInputStream(file);BufferedInputStream bis = new BufferedInputStream(is);zos.putNextEntry(new ZipEntry(pathName));while ((length = bis.read(buf)) > 0) {zos.write(buf, 0, length);}is.close();}}} catch (Exception e) {e.printStackTrace();}}/*** 解压缩zip文件 * @param fileName 要解压的文件名 包含路径 如:"c:\\test.zip"* @param filePath 解压后存放文件的路径 如:"c:\\temp"* @throws Exception*/public static void unZip(String fileName, String filePath) throws Exception{ ZipFile zipFile = new ZipFile(fileName,"GBK"); Enumeration emu = zipFile.getEntries(); while(emu.hasMoreElements()){ ZipEntry entry = (ZipEntry) emu.nextElement(); if (entry.isDirectory()){ new File(filePath+entry.getName()).mkdirs(); continue; } BufferedInputStream bis = new BufferedInputStream(zipFile.getInputStream(entry)); File file = new File(filePath + entry.getName()); File parent = file.getParentFile(); if(parent != null && (!parent.exists())){ parent.mkdirs(); } FileOutputStream fos = new FileOutputStream(file); BufferedOutputStream bos = new BufferedOutputStream(fos,BUFFER); byte [] buf = new byte[BUFFER]; int len = 0; while((len=bis.read(buf,0,BUFFER))!=-1){ fos.write(buf,0,len); } bos.flush(); bos.close(); bis.close(); } zipFile.close();}/** * batch read EpgFile * @param fileUrl */public static File[] readEpgFile(String fileUrl){File epgfile = new File(fileUrl);File[] fileArry = epgfile.listFiles();return fileArry;}}