ZIP压缩类 import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class ZipCompress ... { /** *//** * @param args */ public static void main(String[] args) throws IOException ...{ compress("D:/tomcat-5.5.20","d:/test/testZip.zip"); } /** *//** * 递归压缩文件 * @param source 源路径,可以是文件,也可以目录 * @param destinct 目标路径,压缩文件名 * @throws IOException */ private static void compress(String source,String destinct) throws IOException ...{ List fileList=loadFilename(new File(source)); ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(new File(destinct))); byte[] buffere=new byte[8192]; int length; BufferedInputStream bis; for(int i=0;i<fileList.size();i++) ...{ File file=(File) fileList.get(i); zos.putNextEntry(new ZipEntry(getEntryName(source,file))); bis=new BufferedInputStream(new FileInputStream(file)); while(true) ...{ length=bis.read(buffere); if(length==-1) break; zos.write(buffere,0,length); } bis.close(); zos.closeEntry(); } zos.close(); } /** *//** * 递归获得该文件下所有文件名(不包括目录名) * @param file * @return */ private static List loadFilename(File file) ...{ List filenameList=new ArrayList(); if(file.isFile()) ...{ filenameList.add(file); } if(file.isDirectory()) ...{ for(File f:file.listFiles()) ...{ filenameList.addAll(loadFilename(f)); } } return filenameList; } /** *//** * 获得zip entry 字符串 * @param base * @param file * @return */ private static String getEntryName(String base,File file) ...{ File baseFile=new File(base); String filename=file.getPath(); //int index=filename.lastIndexOf(baseFile.getName()); if(baseFile.getParentFile().getParentFile()==null) return filename.substring(baseFile.getParent().length()); return filename.substring(baseFile.getParent().length()+1); }} ZIP解压类 import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; public class ZipDecompression ... { /** *//** * @param args * @throws IOException */ public static void main(String[] args) throws IOException ...{ decompression("d:/test/testZip.zip","d:/test/un"); } /** *//** * 解压ZIP文件 * @param zipFile 要解压的ZIP文件路径 * @param destination 解压到哪里 * @throws IOException */ public static void decompression(String zipFile,String destination) throws IOException ...{ ZipFile zip=new ZipFile(zipFile); Enumeration en=zip.entries(); ZipEntry entry=null; byte[] buffer=new byte[8192]; int length=-1; InputStream input=null; BufferedOutputStream bos=null; File file=null; while(en.hasMoreElements()) ...{ entry=(ZipEntry)en.nextElement(); if(entry.isDirectory()) ...{ System.out.println("directory"); continue; } input=zip.getInputStream(entry); file=new File(destination,entry.getName()); if(!file.getParentFile().exists()) ...{ file.getParentFile().mkdirs(); } bos=new BufferedOutputStream(new FileOutputStream(file)); while(true) ...{ length=input.read(buffer); if(length==-1) break; bos.write(buffer,0,length); } bos.close(); input.close(); } zip.close(); }}