javazip压缩

    技术2025-10-04  6

    package com.hola.range.test;

    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.ArrayList;import java.util.Collection;import java.util.Enumeration;import java.util.zip.ZipEntry;import java.util.zip.ZipFile;import java.util.zip.ZipOutputStream;

    /** * Java版的Zip工具 *  * @author leizhimin 2008-11-27 11:16:05 */public class ZipUtils {

     private static final int BUFF_SIZE = 1024 * 1024; // 1M Byte

     /**  * 批量压缩文件(夹)  *   * @param resFileList  *            要压缩的文件(夹)列表  * @param zipFile  *            生成的压缩文件  * @throws IOException  *             当压缩过程出错时抛出  */ public static void zipFiles(Collection<File> resFileList, File zipFile) throws IOException {  ZipOutputStream zipout = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile), BUFF_SIZE));  for (File resFile : resFileList) {   zipFile(resFile, zipout, "");  }  zipout.close(); }

     /**  * 批量压缩文件(夹)  *   * @param resFileList  *            要压缩的文件(夹)列表  * @param zipFile  *            生成的压缩文件  * @param comment  *            压缩文件的注释  * @throws IOException  *             当压缩过程出错时抛出  */ public static void zipFiles(Collection<File> resFileList, File zipFile, String comment) throws IOException {  ZipOutputStream zipout = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile), BUFF_SIZE));  for (File resFile : resFileList) {   zipFile(resFile, zipout, "");  }  zipout.setComment(comment);  zipout.close(); }

     /**  * 解压缩一个文件  *   * @param zipFile  *            压缩文件  * @param folderPath  *            解压缩的目标目录  * @throws IOException  *             当压缩过程出错时抛出  */ public static void upZipFile(File zipFile, String folderPath) throws IOException {  ZipFile zf = new ZipFile(zipFile);  for (Enumeration entries = zf.entries(); entries.hasMoreElements();) {   ZipEntry entry = ((ZipEntry) entries.nextElement());   InputStream in = zf.getInputStream(entry);   OutputStream out = new FileOutputStream(folderPath + File.separator + entry.getName());   byte buffer[] = new byte[BUFF_SIZE];   int realLength;   while ((realLength = in.read(buffer)) > 0) {    out.write(buffer, 0, realLength);   }   in.close();   out.close();  } }

     private static void zipFile(File resFile, ZipOutputStream zipout, String rootpath) throws IOException {  rootpath = rootpath + (rootpath.trim().length() == 0 ? "" : File.separator) + resFile.getName();  if (resFile.isDirectory()) {   File[] fileList = resFile.listFiles();   for (File file : fileList) {    zipFile(file, zipout, rootpath);   }  } else {   byte buffer[] = new byte[BUFF_SIZE];   BufferedInputStream in = new BufferedInputStream(new FileInputStream(resFile), BUFF_SIZE);   System.out.println(rootpath);   zipout.putNextEntry(new ZipEntry(rootpath));   int realLength;   while ((realLength = in.read(buffer)) != -1) {    zipout.write(buffer, 0, realLength);   }   in.close();   zipout.flush();   zipout.closeEntry();  } }

     public static void main(String[] args) throws IOException {  Collection<File> resFileList = new ArrayList<File>();  resFileList.add(new File("f://IMAG0033.jpg"));  resFileList.add(new File("f://IMAG0034.jpg"));  resFileList.add(new File("f://IMAG0035.jpg"));  resFileList.add(new File("f://zip//"));

      File zipFile = new File("f://txxxt.zip");

      ZipUtils.zipFiles(resFileList, zipFile); }

    }

    最新回复(0)