`
sanmaoyouxiao
  • 浏览: 10532 次
  • 性别: Icon_minigender_1
  • 来自: 陕西
社区版块
存档分类
最新评论

java对zip压缩文件解压缩

    博客分类:
  • JDK
阅读更多

     偶尔一次,遇到这样一个问题,要求对zip文件进行解压缩,并读取压缩包中.txt和.inf文件的数据,经过jdk Helper 和 Google才将问题得以解决。这里只写了解压过程,在main方法中压缩包存放路径和解压到目标的文件已经硬编码进去了。程序整体结构不是很令人满意,仍然需要重构.......

package com.da.unzip;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Reader;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

public class Unzip {

 public static void main(String[] args) throws Exception {

  Unzip unzip = new Unzip();
  String zippath = "C:\\unzip\\";// /解压到的目标文件路径
  String zipDir = "C:\\data\\";// 要解压的压缩文件的存放路径
  
   File file = new File(zipDir);
   List list = unzip.getSubFiles(file);
   for (Object obj : list) {
   String realname = ((File)obj).getName();
   System.out.println(realname);
   int end = realname.lastIndexOf(".");
   System.out.println("要解压缩的文件名.........."+zipDir+realname);
   System.out.println("解压到的目录" +zippath+realname.substring(0, end));
   unzip.testReadZip(zippath,zipDir+realname);
   }  

 }

 

 /*
  * 解压缩功能. 将zippath目录文件解压到unzipPath目录下. @throws Exception
  */
 public void ReadZip(String zippath, String unzipPath) throws Exception {

  ZipFile zfile = new ZipFile(unzipPath);// 生成一个zip文件对象

  System.out.println(zfile.getName());// 获取要解压的zip的文件名全路径

  Enumeration zList = zfile.entries();// 返回枚举对象

  ZipEntry ze = null;// 用于表示 ZIP 文件条目

  byte[] buf = new byte[1024];// 声明字节数组
  /**
   * 循环获取zip文件中的每一个文件
   */
  while (zList.hasMoreElements()) {
   // 从ZipFile中得到一个ZipEntry
   ze = (ZipEntry) zList.nextElement();
   if (ze.isDirectory())// 如果为目录条目,则返回 true,执行下列语句
   {
    System.out.println("Dir: " + ze.getName() + " skipped..");
    continue;
   }
   int begin = zfile.getName().lastIndexOf("\\") + 1;
   int end = zfile.getName().lastIndexOf(".");
   String zipRealName = zfile.getName().substring(begin, end);
   System.out.println("解压缩开始Extracting:"+ze.getName()+"\t"+ze.getSize()+"\t"+ze.getCompressedSize());
   // 以ZipEntry为参数得到一个InputStream,并写到OutputStream中,并加上缓冲
   OutputStream os = new BufferedOutputStream(
     new FileOutputStream(getRealFileName(zippath + "\\"
       + zipRealName, ze.getName())));
   InputStream is = new BufferedInputStream(zfile.getInputStream(ze));
   String fileName = getRealFileName(zippath, ze.getName()).getName();
   System.out.println("解压出的文件名称:" + fileName);
   int readLen = 0;
   while ((readLen = is.read(buf, 0, 1024)) != -1) {
    os.write(buf, 0, readLen);
   }
   is.close();
   os.close();
   // System.out.println("解压缩结束Extracted: "+ze.getName());
  }
  zfile.close();
 }

 /**
  * 给定根目录,返回一个相对路径所对应的实际文件名.
  *
  * @param zippath
  *            指定根目录
  * @param absFileName
  *            相对路径名,来自于ZipEntry中的name
  * @return java.io.File 实际的文件
  */
 private File getRealFileName(String zippath, String absFileName) {

  String[] dirs = absFileName.split("/", absFileName.length());

  File ret = new File(zippath);// 创建文件对象

  if (dirs.length > 1) {
   for (int i = 0; i < dirs.length - 1; i++) {
    ret = new File(ret, dirs[i]);

   }
  }

  if (!ret.exists()) {// 检测文件是否存在
   ret.mkdirs();// 创建此抽象路径名指定的目录
  }
  ret = new File(ret, dirs[dirs.length - 1]);// 根据 ret 抽象路径名和 child
             // 路径名字符串创建一个新 File 实例

  return ret;
 }
 
}
 

分享到:
评论

相关推荐

    java 中 zip压缩文件解压工具类

    本文将深入探讨如何使用Java来处理ZIP文件,特别是针对标题所提及的“java 中 zip压缩文件解压工具类”。我们将讨论核心的Java API,如`java.util.zip`包中的类,并通过一个名为`CompressFileUtils`的工具类来展示...

    JAVA文件压缩与解压缩实践,java解压缩zip文件,Java源码.zip

    在Java编程语言中,文件的压缩与解压缩是常见的操作,尤其在数据传输、存储优化以及备份场景下显得尤为重要。...通过上述知识点,开发者能够有效地在Java环境中进行ZIP文件的压缩与解压缩操作,满足实际项目需求。

    (JAVA)利用Java实现zip压缩.解压缩.rar_decompress rar java_zip 压缩

    在Java编程语言中,我们...总的来说,Java中的ZIP压缩和解压缩功能强大且易于使用,是开发人员处理文件压缩需求的首选工具。通过熟练掌握`java.util.zip`包,你可以轻松地在Java应用程序中实现文件的压缩和解压缩功能。

    JAVA文件压缩与解压缩实践(源代码).zip

    JAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩...

    java zip文件压缩与解压缩

    解压缩ZIP文件则可以使用`org.apache.commons.compress.archivers.zip.ZipArchiveInputStream`类。同样,我们需要设置正确的编码来正确读取中文文件名: ```java import org.apache.commons.compress.archivers.zip...

    java 操作Zip文件(压缩、解压、加密).zip

    Java操作Zip文件主要涉及到对文件和目录的压缩与解压缩,以及在必要时对压缩文件进行加密处理。这里我们重点讨论使用两个库:`zip4j`和`Apache Ant`来实现这些功能。 1. **zip4j库**:`zip4j-1.3.2.jar`是一个用...

    java 解压缩zip文件

    在Java编程语言中,解压缩ZIP文件是一项常见的任务,特别是在处理数据传输、文件打包和部署等场景下。本文将深入探讨如何使用Java API来解压缩ZIP文件,包括基本概念、核心类库以及具体实现步骤。 ZIP文件是一种...

    JAVA文件压缩与解压缩实践(源代码+论文)

    Java中的`GZIPOutputStream`和`GZIPInputStream`用于对文件进行GZIP压缩和解压缩。 4. **源代码实现**:实践中提供的源代码展示了如何使用Java API来实现文件和目录的压缩与解压缩。这可能包括读取文件,创建压缩流...

    java android zip解压缩(解决压缩中文乱码问题)

    本篇文章将深入探讨如何在Android平台上解决Java ZIP库在解压缩中文文件时出现的乱码问题。 首先,我们要明白乱码问题的根源。在文件的压缩和解压缩过程中,文件名通常被编码为字节序列,这个序列取决于原始文件名...

    基于Java向zip压缩包追加文件

    当需要向已存在的ZIP文件追加文件时,首先使用`ZipUtil`解压缩ZIP文件到一个临时目录,然后在该目录中添加新的文件,最后重新压缩整个目录并覆盖原有的ZIP文件。以下是大致的步骤: - 使用`ZipUtil`的`unzip`方法...

    zip 压缩 文件 Java

    在Java编程语言中,处理ZIP压缩文件是一项常见的任务,它涉及到文件和目录的打包与解压。本篇文章将深入探讨如何使用Java实现ZIP文件的压缩和解压缩操作,以及涉及的相关知识点。 首先,理解ZIP文件格式是基础。ZIP...

    java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip

    java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文)....

    Java工具类ZIP解压缩

    Java工具类ZIP解压缩Java工具类ZIP解压缩Java工具类ZIP解压缩

    zip解压缩文件文件夹都可以(java)

    zip解压缩文件文件夹都可以,代码清晰,注释多。非常容易看懂

    使用Java向服务器上传文件压缩包并实现解压缩

    在这个场景中,我们关注的是如何使用Java来实现文件压缩包的上传以及在服务器上的解压缩。Java作为一种强大的编程语言,提供了丰富的库来支持这样的操作,特别是在涉及到SFTP(Secure File Transfer Protocol)时,...

    利用Java实现zip压缩解压缩

    ### Java 实现 ZIP 文件压缩与解压缩 #### 知识点概述 在现代软件开发过程中,数据压缩是一项非常重要的技术,特别是在处理大量数据时。Java 作为一种广泛应用的编程语言,提供了丰富的 API 来支持文件的压缩与解...

    java zip解压缩

    Java Zip压缩和解压缩是Java开发中常见的文件处理任务,主要涉及到`java.util.zip`包中的类和方法。本文将详细讲解如何使用Java进行Zip文件的压缩与解压缩操作,并结合给定的标签"源码"和"工具"来探讨实际应用场景。...

    JAVA解压ZIP格式的压缩包_java解压缩_zip_

    首先,我们需要了解Java中的`java.util.zip`包,这个包提供了处理压缩文件的基本工具。在ZIP格式的压缩包处理中,我们主要会用到`ZipInputStream`和`ZipEntry`这两个类。`ZipInputStream`是用于读取ZIP文件的输入流...

    java ZIP 解压缩

    java语言操作解压缩文件。 /** * 数据压缩 * * @param data * @return * @throws Exception */ public static byte[] compress(byte[] data) throws Exception { ByteArrayInputStream bais = new ...

Global site tag (gtag.js) - Google Analytics