参考:http://blog.163.com/shanqing_shuixiu@yeah/blog/static/165319229201192444434865/
Talk is cheap,show me the code!
同一文件夹下的多个文件夹打成一个zip包
import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.zip.CRC32; import java.util.zip.CheckedOutputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class ZipCompressor { static final int BUFFER = 8192; private File zipFile; public ZipCompressor(String pathName) { zipFile = new File(pathName); } public void compress(String... pathName) { ZipOutputStream out = null; try { FileOutputStream fileOutputStream = new FileOutputStream(zipFile); CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream, new CRC32()); out = new ZipOutputStream(cos); String basedir = ""; for (int i=0;i<pathName.length;i++){ compress(new File(pathName[i]), out, basedir); } out.close(); } catch (Exception e) { throw new RuntimeException(e); } } public void compress(String srcPathName) { File file = new File(srcPathName); if (!file.exists()) throw new RuntimeException(srcPathName + "不存在!"); try { FileOutputStream fileOutputStream = new FileOutputStream(zipFile); CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream, new CRC32()); ZipOutputStream out = new ZipOutputStream(cos); String basedir = ""; compress(file, out, basedir); out.close(); } catch (Exception e) { throw new RuntimeException(e); } } private void compress(File file, ZipOutputStream out, String basedir) { /* 判断是目录还是文件 */ if (file.isDirectory()) { System.out.println("压缩:" + basedir + file.getName()); this.compressDirectory(file, out, basedir); } else { System.out.println("压缩:" + basedir + file.getName()); this.compressFile(file, out, basedir); } } /** 压缩一个目录 */ private void compressDirectory(File dir, ZipOutputStream out, String basedir) { if (!dir.exists()) return; File[] files = dir.listFiles(); for (int i = 0; i < files.length; i++) { /* 递归 */ compress(files[i], out, basedir + dir.getName() + "/"); } } /** 压缩一个文件 */ private void compressFile(File file, ZipOutputStream out, String basedir) { if (!file.exists()) { return; } try { BufferedInputStream bis = new BufferedInputStream( new FileInputStream(file)); ZipEntry entry = new ZipEntry(basedir + file.getName()); out.putNextEntry(entry); int count; byte data[] = new byte[BUFFER]; while ((count = bis.read(data, 0, BUFFER)) != -1) { out.write(data, 0, count); } bis.close(); } catch (Exception e) { throw new RuntimeException(e); } } public static void main(String[] args) { ZipCompressor zc = new ZipCompressor("E:/resource/resource.zip"); zc.compress("E:/resource/js","E:/resource/css","E:/resource/images"); } }
相关推荐
本文将详细讲解如何使用Java实现将多目录多层级的文件打成ZIP包,以及如何解压这些ZIP包。我们将主要关注`FileUtils.java`这个类,以及依赖的`commons-compress-1.1.jar`库。 `commons-compress-1.1.jar`是Apache ...
总之,`ZipCompressor.java`是实现文件和文件夹压缩的关键类,它利用了Java标准库提供的`ZipOutputStream`和`ZipEntry`,通过一系列的步骤,将原始文件和目录打包成ZIP格式的压缩文件。熟悉这些概念和API,开发者就...
在Java后台中,批量下载文件压缩成zip下载可以使用Java的文件输入输出流和zip压缩流来实现。首先,需要在Servlet中获取文件列表,然后使用循环将文件一个个添加到zip文件中,最后下载zip文件到本地桌面。 java批量...
2. **Apache Commons Compress**:这是一个第三方库,提供了更多的压缩功能,包括对ZIP的支持,相比Java内置的`java.util.zip`更加强大和灵活。 3. **ZipOutputStream**:用于创建ZIP格式的输出流,它可以被用来写入...
ZIP是一种广泛使用的文件压缩格式,它能够将多个文件打包并压缩成一个单一的ZIP档案,以便于存储、传输和分享。ZIP文件格式的标准由PKWARE公司制定,并由Info-ZIP组织进行开源实现。在C语言中实现ZIP操作,我们需要...
java 实现指定目录下的文件打包zip格式 并指定存放zip包
在Java编程中,向现有的ZIP压缩包追加文件通常需要经过解压、修改、再压缩的步骤,因为标准的Java ZIP库(如`java.util.zip`包)并不直接支持追加到已存在的ZIP文件。本篇文章将深入探讨如何实现这个功能,主要关注...
Java操作Zip文件主要涉及到对文件和目录的压缩与解压缩,以及在必要时对压缩文件进行加密处理。这里我们重点讨论使用两个库:`zip4j`和`Apache Ant`来实现这些功能。 1. **zip4j库**:`zip4j-1.3.2.jar`是一个用...
Java无需解压直接读取Zip文件和文件内容是Java语言中的一种常见操作,通过使用java.util.zip包中的ZipFile、ZipInputStream和ZipEntry类,我们可以轻松地读取Zip文件和文件内容。下面,我们将详细介绍如何使用Java...
单个文件、多个文件压缩 /** * 使用给定密码压缩指定文件或文件夹到指定位置. * * dest可传最终压缩文件存放的绝对路径,也可以传存放目录,也可以传null或者"". * 如果传null或者""则将压缩文件存放在当前...
此资源解压后为一个文件夹,就是一个package包 (压缩后为Zip文件) 无需导入任何个人jar包 压缩后效果等同于用winrar给压缩包加密码 时间紧迫,暂时存在中文文件夹名称乱码问题 不影响文件夹内各类型文件内容 实现...
此资源解压后为一个文件夹,就是一个package包 (压缩后为Zip文件) 无需导入任何个人jar包 压缩后效果等同于用winrar给压缩包加密码 时间紧迫,暂时存在中文文件夹名称乱码问题 不影响文件夹内各类型文件内容 ...
这个包提供了一系列的类,如`ZipOutputStream`用于创建ZIP压缩文件,`ZipInputStream`则用于读取和解压缩ZIP文件。在本教程中,我们将深入探讨如何使用这些工具类来实现ZIP文件的压缩和解压缩。 首先,我们来看如何...
ZIP是一种无损数据压缩格式,它能够将一个或多个文件或文件夹打包成单一的ZIP文件。ZIP文件不仅压缩了原始数据,还包含文件的元信息,如文件名、日期、时间戳和权限。这种格式支持多种压缩算法,如DEFLATE,这是最...
在Java编程环境中,打包文件或文件夹是一项常见的任务,特别是在软件开发过程中,我们需要将源代码、资源文件等打包成一个可分发的格式,如.zip。在这个场景中,我们使用了Java来实现文件夹的打包功能,并且依赖了...
ZIP是一种常见的文件压缩格式,通常用于打包和分发多个文件。这些源代码文件很可能是实现了ZIP文件操作的核心功能。 ZipImplement.cpp可能包含了与压缩和解压缩相关的具体实现,比如算法、错误处理等。对应的头文件...
在标题中提到的"java实现对文件或文件夹的压缩和解压缩",我们可以使用这个库来实现。具体来说,我们可以创建一个`ZipUtil`类,里面包含压缩和解压缩的静态方法。 首先,为了压缩文件或文件夹,我们需要使用`org....
Java实现Zip压缩文件操作的工具类 文章介绍:https://blog.csdn.net/rongbo91/article/details/117747042 (可作为Jar依赖包直接使用) 1、项目使用前,请进入rdc-bom目录下,执行mvn clean install命令 2、可...
当涉及到软件更新时,可以创建一个包含新版本所有文件的`zip`包,然后在客户端使用这个`zip`包进行自动更新。首先,下载更新包,然后使用上述方法解压缩到指定的安装目录,覆盖旧文件。这样,用户就可以无缝地获取到...
应用java来压缩需要打包的文件,在系统管理中将毛哥路径或者某个文件夹压缩成zip包