最近项目中要使用到有关zip文件的压缩和解压的功能,当然了,这些linux或者cmd命令可以轻松实现,但是LZ试着写了一个java版本的工具类,用起来还不错,有需要的童鞋可以直接拿来用,代码开路。
package com.feng.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 java.util.zip.ZipEntry; import java.util.zip.ZipException; import java.util.zip.ZipFile; import java.util.zip.ZipOutputStream; /** * * @version 1.0 * @since 2015-9-11 * @category com.feng.util * */ public final class ZipUtil { /** * 缓冲大小 */ private static int BUFFERSIZE = 2 << 10; /** * 压缩 * @param paths * @param fileName */ public static void zip(String[] paths, String fileName) { ZipOutputStream zos = null; try { zos = new ZipOutputStream(new FileOutputStream(fileName)); for(String filePath : paths) { //递归压缩文件 File file = new File(filePath); String relativePath = file.getName(); if(file.isDirectory()) { relativePath += File.separator; } zipFile(file, relativePath, zos); } } catch (IOException e) { e.printStackTrace(); } finally { try { if(zos != null) { zos.close(); } } catch (IOException e) { e.printStackTrace(); } } } public static void zipFile(File file, String relativePath, ZipOutputStream zos) { InputStream is = null; try { if(!file.isDirectory()) { ZipEntry zp = new ZipEntry(relativePath); zos.putNextEntry(zp); is = new FileInputStream(file); byte[] buffer = new byte[BUFFERSIZE]; int length = 0; while ((length = is.read(buffer)) >= 0) { zos.write(buffer, 0, length); } zos.flush(); zos.closeEntry(); } else { String tempPath = null; for(File f: file.listFiles()) { tempPath = relativePath + f.getName(); if(f.isDirectory()) { tempPath += File.separator; } zipFile(f, tempPath, zos); } } } catch (IOException e) { e.printStackTrace(); } finally { try { if(is != null) { is.close(); } } catch (IOException e) { e.printStackTrace(); } } } /** * 解压缩 * @param fileName * @param path */ public static void unzip(String fileName, String path) { FileOutputStream fos = null; InputStream is = null; try { ZipFile zf = new ZipFile(new File(fileName)); Enumeration en = zf.entries(); while (en.hasMoreElements()) { ZipEntry zn = (ZipEntry) en.nextElement(); if (!zn.isDirectory()) { is = zf.getInputStream(zn); File f = new File(path + zn.getName()); File file = f.getParentFile(); file.mkdirs(); fos = new FileOutputStream(path + zn.getName()); int len = 0; byte bufer[] = new byte[BUFFERSIZE]; while (-1 != (len = is.read(bufer))) { fos.write(bufer, 0, len); } fos.close(); } } } catch (ZipException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if(null != is) { is.close(); } if(null != fos) { fos.close(); } } catch (IOException e) { e.printStackTrace(); } } } /** * @param args */ public static void main(String[] args) { zip(new String[] {"D:/A/feng/feng/src/com/feng/util/ZipUtil.java","D:/A/feng/feng/src/com/feng/test"}, "E:/test/test.zip"); unzip("E:/test/test.zip", "E:/test/"); } }
相关推荐
Java操作Zip文件主要涉及到对文件和目录的压缩与解压缩,以及在必要时对压缩文件进行加密处理。这里我们重点讨论使用两个库:`zip4j`和`Apache Ant`来实现这些功能。 1. **zip4j库**:`zip4j-1.3.2.jar`是一个用...
NULL 博文链接:https://zhenyong.iteye.com/blog/1576148
在Java编程环境中,处理压缩和解压缩文件是一...以上是关于Java实现带密码的ZIP文件压缩和解压的基本概念和实现细节。通过深入理解这些知识点,开发者可以构建自己的安全文件处理工具,满足对数据隐私和安全性的需求。
在Java编程环境中,解压ZIP压缩文件是一项常见的任务,它涉及到文件I/O操作以及对ZIP文件格式的理解。本文将深入探讨如何使用Java实现这一功能,同时也会提及`UnZip.java`和`UnZip2.java`这两个文件可能包含的实现...
本文将深入探讨如何使用Java实现ZIP文件的压缩与解压,重点讲解核心API,如`java.util.zip`包中的`ZipOutputStream`和`ZipInputStream`。 首先,我们来了解一下ZIP文件格式。ZIP是一种用于存储多个文件到一个单一...
Java无需解压直接读取Zip文件和文件内容是Java语言中的一种常见操作,通过使用java.util.zip包中的ZipFile、ZipInputStream和ZipEntry类,我们可以轻松地读取Zip文件和文件内容。下面,我们将详细介绍如何使用Java...
本文将深入探讨如何使用Java来处理ZIP文件,特别是针对标题所提及的“java 中 zip压缩文件解压工具类”。我们将讨论核心的Java API,如`java.util.zip`包中的类,并通过一个名为`CompressFileUtils`的工具类来展示...
总结起来,Java通过Apache Commons Compress库提供的API,可以方便地实现多层级目录的文件压缩和解压。`FileUtils.java`类是这个功能的具体实现,它封装了上述的压缩和解压过程,使开发者能够轻松地在代码中调用这些...
基于GUI用IO流中的ZipOutputStream ,ZipInputStream实现文件的解压与压缩, 如文件解压函数如下 private void unZip(String zipFileName, String outputDirectory)throws Exception { InputStream in=null; ...
在Java编程中,处理文件压缩和解压是常见的任务,特别是使用ZIP格式。然而,当涉及到包含中文字符的文件或目录时,可能会遇到乱码问题。这个问题主要源于字符编码的不一致,通常需要正确设置字符集来确保中文字符在...
java 文件zip 压缩与解压 可以直接调用
在压缩和解压缩过程中,需要考虑保留文件的原始权限和属性,这可以通过设置ZipEntry的额外字段来实现。 10. **安全性** 当处理来自不可信来源的ZIP文件时,应小心潜在的安全风险,如路径遍历攻击(Path Traversal...
以上就是关于Zip文件压缩和解压的基本介绍,无论是通过图形界面工具还是编程实现,都能有效地管理和处理Zip文件。在实际应用中,我们还可以根据需求选择合适的压缩算法、设置密码保护、添加注释等功能,提高文件管理...
ZIP格式 的压缩和解压源码,里面有main方法可直接测试,java实现实例。
本文将深入探讨如何使用Java实现ZIP和RAR类型的压缩与解压操作,以及相关知识点。 首先,我们来看ZIP文件格式。ZIP是一种广泛使用的文件压缩格式,其在Java中的处理主要通过`java.util.zip`包。这个包提供了多个类...
在Java编程环境中,上传并处理ZIP和RAR压缩文件是一项常见的任务,特别是在文件传输、数据存储以及备份场景下。本文将详细讲解如何实现这个功能,包括文件上传、实时进度跟踪、指定解压路径以及解压过程。 首先,让...
### JAVA解压ZIP多层目录文件(需ant.jar) #### 概述 本文将详细介绍一个Java方法,该方法用于解压包含多层目录结构的ZIP文件,并能够支持中文文件名。这种方法利用了Apache Ant库中的`org.apache.tools.zip....
在Java编程语言中,实现文件的压缩和解压是常见的任务,这有助于数据存储和传输。本示例将深入探讨如何使用Java的内置库来处理ZIP格式的压缩和解压缩。`java.util.zip`包提供了必要的类来实现这一功能。 首先,让...
本文将详细介绍如何使用Java实现文件的压缩与解压功能。 #### 二、关键技术点 1. **Apache Commons Compress库**:本示例中使用了Apache Commons Compress库来进行文件压缩与解压操作。这是一个功能强大的工具包,...
本话题聚焦于使用Java实现的zip文件定时解压功能,这是一个常见的需求,特别是在数据备份、文件同步或自动化工作流中。下面我们将深入探讨如何使用Java来实现这一功能。 首先,我们需要了解Java对zip文件的支持。...