`

Apache自带包打包文件夹成zip包

阅读更多
  1. import java.io.File;   
  2. import java.io.FileInputStream;   
  3. import java.io.IOException;   
  4. import java.io.InputStream;   
  5. import java.util.HashMap;   
  6. import java.util.Map;   
  7. import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;   
  8. import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;   
  9. import org.apache.commons.logging.Log;   
  10. import org.apache.commons.logging.LogFactory;   
  11.   
  12. /**  
  13.  *  
  14.  * @author teddy 
  15.  */  
  16. public final class ZipUtil {   
  17.   
  18.     private static final Log log = LogFactory.getLog(ZipUtil.class);   
  19.   
  20.     /**  
  21.      * 打包文件  
  22.      * @param files 文件或文件夹的集合  
  23.      * @param out 输出的zip文件  
  24.      */  
  25.     public static void zip(File[] files, File out) {   
  26.         if (files != null) {   
  27.             Map<String, File> map = new HashMap<String, File>();   
  28.             for (File f : files) {   
  29.                 list(f, null, map);   
  30.             }   
  31.             if (!map.isEmpty()) {   
  32.                 try {   
  33.                     ZipArchiveOutputStream zaos = new ZipArchiveOutputStream(out);   
  34.                     for (Map.Entry<String, File> entry : map.entrySet()) {   
  35.                         File file = entry.getValue();   
  36.                         ZipArchiveEntry zae = new ZipArchiveEntry(file, entry.getKey());   
  37.                         zaos.putArchiveEntry(zae);   
  38.                         InputStream is = new FileInputStream(file);   
  39.                         byte[] b = new byte[1024 * 5];   
  40.                         int i = -1;   
  41.                         while ((i = is.read(b)) != -1) {   
  42.                             zaos.write(b, 0, i);   
  43.                         }   
  44.                         is.close();   
  45.                         zaos.closeArchiveEntry();   
  46.                     }   
  47.                     zaos.finish();   
  48.                     zaos.close();   
  49.                 } catch (IOException ex) {   
  50.                     log.error(ex.getMessage(), ex);   
  51.                 }   
  52.             }   
  53.         }   
  54.     }   
  55.   
  56.     private static void list(File f, String parent, Map<String, File> map) {   
  57.         String name = f.getName();   
  58.         if (parent != null) {   
  59.             name = parent + "/" + name;//设置在zip包里的相对路径   
  60.         }   
  61.         if (f.isFile()) {   
  62.             map.put(name, f);   
  63.         } else if (f.isDirectory()) {   
  64.             for (File file : f.listFiles()) {   
  65.                 list(file, name, map);   
  66.             }   
  67.         }   
  68.     }   
  69. }  
分享到:
评论

相关推荐

    PHP自带ZIP压缩、解压缩类ZipArchiv使用指南

    这个类提供了对ZIP文件的各种操作,包括创建、打开、修改和提取ZIP文件。为了使用`ZipArchive`,你的PHP环境需要满足以下条件:PHP版本需大于等于5.2.0,并且PECL zip扩展库版本大于等于1.1.0。在Windows系统中,...

    test10源码.zip

    很抱歉,根据您提供的信息,"test10源码.zip"是一个压缩文件,通常用于存储多个文件或文件夹。在IT行业中,源码指的是编程语言编写的原始代码,它是软件或应用程序的基础。由于标签为空,我们无法直接获取特定的技术...

    文件解压与Excel解析

    RAR和ZIP是常见的文件压缩格式,它们允许用户将多个文件或文件夹打包成一个单一的文件,便于存储、传输和备份。RAR格式由RARLAB公司开发,通常提供更好的压缩率,支持修复损坏的压缩文件。ZIP格式则更通用,大多数...

    极简云盘源码直接开源开心版无限制

    程序自带多套Material配色主题,带数据统计、用户系统、验证码、SMTP发件、创建文件夹/多文件/密码保护分享链接等功能,支持zip打包下载,音乐视频图片预览。 极简网盘是一个轻量级文件管理与共享系统,支持多用户...

    CircleCheckBox .zip

    在Android开发中,系统自带的UI组件有时无法满足开发者对于界面个性化的需求。CircleCheckBox就是为了解决这一问题而诞生的,它允许开发者自定义复选框的外观和行为,以实现更加吸引人的用户界面。通过使用...

    tomcat源码

    5. **导入源码**:将解压后的Tomcat源码文件夹(`apache-tomcat-7.0.61-src`)中的内容复制到Eclipse项目中,替换原有的`src`文件夹。 6. **配置构建路径**:右键点击项目,选择“Build Path” &gt; “Configure Build...

    maven的安装文件以及集成TOMCAT、eclipse的教程

    解压后会得到一个名为`apache-maven-3.3.9`的文件夹。 3. **配置环境变量**: 需要设置两个系统环境变量,分别是`M2_HOME`和`PATH`。 - `M2_HOME`: 指向Maven的安装目录,例如`C:\Program Files\apache-maven-3.3.9...

    Windows maven下载安装与配置详细教程文档

    1. **构建项目**:Maven 会根据项目的`pom.xml`文件来执行相应的任务,包括编译源代码、运行单元测试、打包成 JAR/WAR 文件等。 2. **管理依赖**:通过在`pom.xml`中声明依赖关系,Maven 会自动下载所需的库并将其...

    maven下载、安装、配置与使用教程.docx

    - Maven 自带了许多常用插件,如编译插件、打包插件、测试插件等。 - 还支持第三方插件,可以根据项目需求选择合适的插件进行安装和配置。 #### 五、基本 Maven 命令 - `mvn clean`:清理上一次构建产生的临时...

    酒桌上的座次

    - 在Java中,`java.util.zip`包提供了处理ZIP文件的API,而处理RAR文件可能需要第三方库,如Apache Commons Compress。 - 在C#/.NET环境中,`System.IO.Compression`命名空间提供了对ZIP文件的支持,RAR文件操作...

    maven 教程

    - **依赖管理**: Maven 自带一个本地仓库,用于存储项目依赖的 JAR 包。此外,还可以配置远程仓库(如 Maven Central Repository),以便自动下载所需的依赖。 - **插件系统**: Maven 插件是实现各种构建任务的关键...

    开发部署安装手册

    ##### 2.2 在Eclipse中把项目打成WAR包 - **打包步骤**: - 在Eclipse中选择项目,导出为WAR包。 - 设置导出选项,包括导出路径等。 ##### 2.3 部署项目到测试环境 - **部署步骤**: - 将WAR包上传到测试环境的...

Global site tag (gtag.js) - Google Analytics