- 浏览: 6959 次
文章分类
最新评论
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.Enumeration; import org.apache.commons.compress.archivers.zip.Zip64Mode; import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; import org.apache.commons.compress.archivers.zip.ZipFile; import org.apache.commons.compress.utils.IOUtils; /** * Zip工具栏类,依赖于commons-compress-1.5.jar。 * * @author Elfy * @date 2013年02月25日 */ public class ZipUtil { // public static void main(String[] args){ // try { // //new ZipUtil().decompressZip(new // File("d://img.zip"),"img/pic20140626.jpg","d://"); // new ZipUtil().decompressZip(new File("d://img.zip"),"flight.log","d://"); // //new File("d://flight.log").delete(); // //ZipUtil.compress(new File("D://测试压缩文件"),new File("d://img.zip")); // // ZipUtil.compress(new File[]{new // File("F:/testZIP/testzip.txt"),new File("d://ftp"),new // File("e://ftp")},new File("d://压缩文件.zip")); // } catch (IOException e) { // e.printStackTrace(); // } // } /** * 把N多文件或文件夹压缩成zip。 * * @param files * 需要压缩的文件或文件夹。 * @param zipFilePath * 压缩后的zip文件 * @throws IOException * 压缩时IO异常。 * @author Elfy * @date 2013年02月25日 */ public static void compress(File[] files, File zipFile) throws IOException { if (CollectionUtil.isEmpty(files)) { return; } ZipArchiveOutputStream out = new ZipArchiveOutputStream(zipFile); out.setUseZip64(Zip64Mode.AsNeeded); // 将每个文件用ZipArchiveEntry封装 for (File file : files) { if (file == null) { continue; } compressOneFile(file, out, ""); } if (out != null) { out.close(); } } /** * 功能:压缩文件或文件夹。 * * @author Elfy * @date 2013年02月25日 * @param srcFile * 源文件。 * @param destFile * 压缩后的文件 * @throws IOException * 压缩时出现了异常。 */ public static void compress(File srcFile, File destFile) throws IOException { ZipArchiveOutputStream out = null; try { out = new ZipArchiveOutputStream(new BufferedOutputStream( new FileOutputStream(destFile), 1024)); compressOneFile(srcFile, out, ""); } finally { out.close(); } } /** * 功能:压缩单个文件,非文件夹。私有,不对外开放。 * * @author Elfy * @date 2013年02月25日 * @param srcFile * 源文件,不能是文件夹。 * @param out * 压缩文件的输出流。 * @param destFile * 压缩后的文件 * @param dir * 在压缩包中的位置,根目录传入/。 * @throws IOException * 压缩时出现了异常。 */ private static void compressOneFile(File srcFile, ZipArchiveOutputStream out, String dir) throws IOException { if (srcFile.isDirectory()) {// 对文件夹进行处理。 ZipArchiveEntry entry = new ZipArchiveEntry(dir + srcFile.getName() + "/"); out.putArchiveEntry(entry); out.closeArchiveEntry(); // 循环文件夹中的所有文件进行压缩处理。 String[] subFiles = srcFile.list(); for (String subFile : subFiles) { compressOneFile(new File(srcFile.getPath() + "/" + subFile), out, (dir + srcFile.getName() + "/")); } } else { // 普通文件。 InputStream is = null; try { is = new BufferedInputStream(new FileInputStream(srcFile)); // 创建一个压缩包。 ZipArchiveEntry entry = new ZipArchiveEntry(srcFile, dir + srcFile.getName()); out.putArchiveEntry(entry); IOUtils.copy(is, out); out.closeArchiveEntry(); } finally { if (is != null) is.close(); } } } /** * 功能:解压缩zip压缩包下的所有文件。 * * @author Elfy * @date 2013年02月25日 * @param zipFile * zip压缩文件 * @param dir * 解压缩到这个路径下 * @throws IOException * 文件流异常 */ public void decompressZip(File zipFile, String dir) throws IOException { ZipFile zf = new ZipFile(zipFile); try { for (Enumeration<ZipArchiveEntry> entries = zf.getEntries(); entries .hasMoreElements();) { ZipArchiveEntry ze = entries.nextElement(); // 不存在则创建目标文件夹。 File targetFile = new File(dir, ze.getName()); // 遇到根目录时跳过。 if (ze.getName().lastIndexOf("/") == (ze.getName().length() - 1)) { continue; } // 如果文件夹不存在,创建文件夹。 if (!targetFile.getParentFile().exists()) { targetFile.getParentFile().mkdirs(); } InputStream i = zf.getInputStream(ze); OutputStream o = null; try { o = new FileOutputStream(targetFile); IOUtils.copy(i, o); } finally { if (i != null) { i.close(); } if (o != null) { o.close(); } } } } finally { zf.close(); } } /** * 功能:解压缩zip压缩包下的某个文件信息。 * * @author Elfy * @date 2013年02月25日 * @param zipFile * zip压缩文件 * @param fileName * 某个文件名,例如abc.zip下面的a.jpg,需要传入/abc/a.jpg。 * @param dir * 解压缩到这个路径下 * @throws IOException * 文件流异常 */ public void decompressZip(File zipFile, String fileName, String dir) throws IOException { // 不存在则创建目标文件夹。 File targetFile = new File(dir, fileName); if (!targetFile.getParentFile().exists()) { targetFile.getParentFile().mkdirs(); } ZipFile zf = new ZipFile(zipFile); Enumeration<ZipArchiveEntry> zips = zf.getEntries(); ZipArchiveEntry zip = null; while (zips.hasMoreElements()) { zip = zips.nextElement(); if (fileName.equals(zip.getName())) { OutputStream o = null; InputStream i = zf.getInputStream(zip); try { o = new FileOutputStream(targetFile); IOUtils.copy(i, o); } finally { if (i != null) { i.close(); } if (o != null) { o.close(); } } } } } /** * 功能:得到zip压缩包下的某个文件信息,只能在根目录下查找。 * * @author Elfy * @date 2013年02月25日 * @param zipFile * zip压缩文件 * @param fileName * 某个文件名,例如abc.zip下面的a.jpg,需要传入/abc/a.jpg。 * @return ZipArchiveEntry 压缩文件中的这个文件,没有找到返回null。 * @throws IOException * 文件流异常 */ public ZipArchiveEntry readZip(File zipFile, String fileName) throws IOException { ZipFile zf = new ZipFile(zipFile); Enumeration<ZipArchiveEntry> zips = zf.getEntries(); ZipArchiveEntry zip = null; while (zips.hasMoreElements()) { zip = zips.nextElement(); if (fileName.equals(zip.getName())) { return zip; } } return null; } /** * 功能:得到zip压缩包下的所有文件信息。 * * @author Elfy * @date 2013年02月25日 * @param zipFile * zip压缩文件 * @return Enumeration<ZipArchiveEntry> 压缩文件中的文件枚举。 * @throws IOException * 文件流异常 */ public Enumeration<ZipArchiveEntry> readZip(File zipFile) throws IOException { ZipFile zf = new ZipFile(zipFile); Enumeration<ZipArchiveEntry> zips = zf.getEntries(); return zips; } }
您的支持是我不断分享的动力!
感谢你的到来,我很高兴
发表评论
-
spring MVC原理 TG【2013-04-08】
2017-04-28 11:28 681概述--Spring MVC工作流程图 图一 ... -
JAVA基础篇【工具类】加密解密(一)DES加密和解密 TG【20130331整理】
2016-11-28 10:24 0import java.io.UnsupportedEn ... -
JAVA基础篇【工具类】MathUtil 数学运算辅助类TG【20130324整理】
2016-11-28 10:17 583数学运算辅助类,希望对大家有所帮助 import java ... -
JAVA基础篇【工具类】CollectionUtil 集合操作工具类 TG【20130318整理】
2016-11-28 10:13 636集合操作工具类 import java.util.Colle ... -
JAVA基础篇【工具类】 SpellHelper 汉字转拼音 TG【20130318整理】
2016-11-28 10:00 493SpellHelper 该类是将汉字转化为拼音的工具类 ... -
JAVA基础篇【工具类】FtpUtil TG【20130317整理】
2016-11-28 09:51 289Ftp工具 在我们编程的时候,我们经常会遇到链接ftp存文件和 ... -
推荐CSS工具资源TG【20110309整理】
2016-11-14 17:27 402456 Berea Street http://www.45 ... -
JAVA基础篇【工具类】StringUtilsTG【20130316整理】
2016-11-14 17:29 367JAVA基础篇【工具类】StringUtilsTG【20110 ... -
浅谈JavaScript&TypeeScriptTG【20130305整理】
2016-11-14 17:02 5051.JavaScript 在1995年时 ...
相关推荐
本篇文章将深入探讨如何在Java中实现一个用于处理HTTPS请求的工具类。 首先,要实现HTTPS请求,我们需要导入Java的`java.net`和`javax.net.ssl`包,这两个包提供了处理网络连接和SSL/TLS安全协议的类。以下是一些...
本篇将详细讲解标题为"完整的java文件读写工具类"所涉及的核心知识点,以及如何实现描述中提到的文件与目录管理功能。 1. **Java IO基础**: Java IO是Java标准库中的核心部分,提供了处理输入/输出流的类。在`...
本篇文章将深入探讨Java中的对象、基础类型以及数据处理相关的工具类。 首先,让我们关注Java中的基础类型。Java有八种原始数据类型:byte、short、int、long、float、double、char和boolean。为了方便处理这些类型...
本篇文章将详细介绍如何在Java中使用Google翻译API,并提供一个可直接运行的工具类示例。 首先,我们需要了解Google翻译API的基本概念。Google Translate API是Google Cloud平台的一部分,它提供了RESTful接口,...
本篇文章将详细介绍如何使用Java语言实现Http和Https请求的工具类,包括如何建立Https连接、如何实现Post请求、如何处理SSL验证等内容。 在Java中,使用HttpURLConnection类可以实现Http和Https请求,但是对于...
本篇文章将深入探讨如何在Java中实现单例模式,以及如何创建一个工具类来封装单例的创建。 首先,让我们了解单例模式的几种常见实现方式: 1. 饿汉式(静态常量): 这是最简单的单例实现,它在类加载时就完成了...
创建一个名为`ZipUtil`的工具类,包含两个主要方法:`zip`和`zipFile`。 - `zip`方法用于压缩多个文件或目录。它接受一个文件路径列表和输出ZIP文件名作为参数。首先创建一个`ZipOutputStream`,然后遍历所有文件...
本篇文章将深入讲解一个名为"封装Zip相关的工具类"的实用代码库,它简化了在C#环境中对Zip文件的操作。 这个工具类的核心目标是提供压缩和解压文件的功能,同时易于集成到项目中,通过创建一个本地的NuGet库,使得...
本篇文章将围绕“基于SpringBoot的FtpUtil工具类”进行深入探讨,旨在帮助开发者理解和运用这一工具,以提升项目开发效率。 首先,我们要了解SpringBoot如何集成FTP服务。在SpringBoot中,我们可以利用Spring ...
Java操作Excel工具类是开发过程中常见的一种需求,尤其是在数据导入导出、数据分析或者报表生成的场景下。在Java中,我们可以使用多种库来处理Excel文件,例如Apache POI、JExcelAPI、OpenCSV等。本篇文章将重点介绍...
本篇文章将深入探讨Jackson库中的核心工具类`ObjectMapper`,以及如何使用`JacksonUtils`来简化JSON操作。 `ObjectMapper`是Jackson库的核心组件,它负责将Java对象转换为JSON字符串,反之亦然。`ObjectMapper`提供...
本篇将详细介绍一些Java中常用的工具类及其应用。 一、`java.util.Arrays` `Arrays`类是Java提供的一组静态方法,用于操作各种类型的数组。它提供了排序、搜索、填充、复制等操作,例如`sort()`用于对数组进行升序...
本篇将详细讲解如何利用Java工具类进行`zip`压缩和解压操作,并重点关注`ZipEntry`类和`commons-compress`库的应用。 首先,`ZipEntry`是Java标准库`java.util.zip`包中的核心类,用于表示`zip`文件中的一个条目...
在本篇内容中,我们将聚焦于"Aspose-17.8 Java 生成PDF工具类",了解如何利用Aspose库在Java环境中创建PDF文件。 首先,`aspose.pdf-17.8.jar`是Aspose.Pdf组件的核心库,它允许开发者在Java应用中创建、操作和转换...
这篇博文"JavaDBF工具类"的作者分享了一个实用的Java库,用于操作DBF文件。通过这个工具类,开发者可以轻松地在Java应用程序中读取DBF文件中的记录,添加、修改或删除记录,并将更改写回文件。这对于需要处理这种...
Java编程语言提供了多种库来处理压缩文件,其中`zip4j`是一个流行的开源库,用于在Java应用程序中方便地创建、读取、修改和解压缩ZIP文件。在本篇文章中,我们将深入探讨`zip4j`库以及如何利用它进行文件压缩和解...
本篇文章将聚焦于“Java Utils 工具类”,特别是通过分析提供的`ProcessUtil.java`文件,来深入理解如何构建和使用这样的工具类。 ### 1. Java工具类的基本概念 工具类通常包含一组静态方法,用于执行特定任务,如...
这篇博客文章“java 日期操作工具类:包括计算两个时间相差距离多少天多少小时多少分多少秒”提供了一个实用的工具类,帮助开发者更方便地处理日期和时间差异。下面将详细解释这个工具类中的关键知识点。 1. **Java...
本篇将围绕Java中的日期工具类和时间工具类展开讨论,同时会涉及到日期时间的格式化。 首先,Java 8之前,我们主要依赖`java.util.Date`和`java.text.SimpleDateFormat`这两个类来处理日期和时间。`Date`类用于表示...
本篇文章将全面解析Java IO工具类,帮助你理解并掌握其在实际开发中的应用。 一、Java IO基础 Java IO体系主要由流(Stream)组成,分为字节流和字符流两大类,分别处理字节数据和字符数据。字节流包括InputStream...