JAVA压缩文件夹,批量压缩文件(夹)
2013-02-21 11:27
537 查看
package com.app.common.util; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; 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 ZipUtil { private static ZipUtil instance = new ZipUtil(); private static final int BUFFEREDSIZE = 1024; private static Log log = LogFactory.getLog(ZipUtil.class); private ZipUtil() { } public static ZipUtil getInstance() { return instance; } public static void zip(String inputFilename, String zipFilename) throws IOException { zip(new File(inputFilename), zipFilename); } public static void zip(File inputFile, String zipFilename) throws IOException { ZipOutputStream out = new ZipOutputStream(new FileOutputStream( zipFilename)); out.setEncoding("GBK"); try { if (log.isDebugEnabled()) { log.debug("压缩开始:待压缩文件(夹)为 " + inputFile); } zip(inputFile, out, ""); } catch (IOException e) { log.error("压缩失败"); } finally { out.close(); if (log.isDebugEnabled()) { log.debug("压缩成功"); } } } private static void zip(File inputFile, ZipOutputStream out, String base) throws IOException { if (inputFile.isDirectory()) { if (inputFile.listFiles().length == 0) { ZipEntry zipEntry = new ZipEntry(base + inputFile.getName() + "/"); out.putNextEntry(zipEntry); out.closeEntry(); } else { base += inputFile.getName() + inputFile.separator; for (File f : inputFile.listFiles()) { zip(f, out, base); } } } else { ZipEntry zipEntry = new ZipEntry(base + inputFile.getName()); out.putNextEntry(zipEntry); FileInputStream in = new FileInputStream(inputFile); try { int c; byte[] by = new byte[BUFFEREDSIZE]; while ((c = in.read(by)) != -1) { out.write(by, 0, c); } } catch (IOException e) { throw e; } finally { in.close(); } } } public static void multiZip(String[] inputFilelist, String zipFilename) throws IOException { File[] files = new File[inputFilelist.length]; for (int i = 0; i < inputFilelist.length; i++) { files[i] = new File(inputFilelist[i]); } multiZip(files, zipFilename); } public static void multiZip(File[] files, String zipFilename) throws IOException { ZipOutputStream out = new ZipOutputStream(new FileOutputStream( zipFilename)); out.setEncoding("GBK"); try { if (log.isDebugEnabled()) { log.debug("压缩开始:待压缩文件(夹)共 " + files.length + "个"); } for (File f : files) { zip(f, out, ""); } } catch (Exception e) { log.error("压缩失败"); } finally { out.close(); if (log.isDebugEnabled()) { log.debug("压缩成功"); } } } }
相关文章推荐
- java 压缩文件,文件夹,和解压缩文件夹
- JAVA实现把指定文件夹下的所有文件压缩成zip包
- 利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
- JAVA实现压缩文件或文件夹
- JAVA基础进阶之文件压缩(包含多重文件夹)
- Java 批量下载 压缩文件 rar格式
- Java 文件或者文件夹的压缩和解压
- strtus2 批量下载 中文问题、压缩文件等 ------ 讨论struts2工作流程 (摘自:http://www.blogjava.net/xcp/archive/2009/10/30/downloadlist.html)
- Java实现zip文件压缩(单个文件、文件夹以及文件和文件夹的组合压缩)
- Java 针对文件与文件夹进行压缩的方法
- java中将一个文件夹下所有的文件压缩成一个文件
- java web 实现把文件夹下的所有文件压缩成zip并实现下载(原文链接)http://blog.csdn.net/sxdtzhaoxinguo/article/details/20550537)
- Java 小程序 实现网络下载图片到制定文件夹,压缩和删除文件
- java实现zip压缩文件/文件夹
- 【转载】用java压缩文件夹/文件
- java实现zip压缩文件(同一文件夹下的多个文件夹打成一个zip包)
- 使用java对文件或文件夹进行压缩和加密
- JAVA实现把指定文件夹下的所有文件压缩成zip包
- java压缩文件及文件夹(包括空文件夹)
- JAVA实现把指定文件夹下的所有文件压缩成zip包