`
aben328
  • 浏览: 1460487 次
  • 性别: Icon_minigender_1
  • 来自: 广东
社区版块
存档分类

java实现zip与unzip

    博客分类:
  • java
阅读更多

java实现zip与unzip

关键字: 转载自http://www.java2000.net/

jdk提供了Zip相关的类方便的实现压缩和解压缩。使用方法很简单。下边分别是压缩和解压缩的简单事例
1,压缩的

 

Java代码 复制代码
  1.     
  2. import java.io.BufferedInputStream;   
  3. import java.io.BufferedOutputStream;   
  4. import java.io.File;   
  5. import java.io.FileInputStream;   
  6. import java.io.FileOutputStream;   
  7. import java.util.zip.ZipEntry;   
  8. import java.util.zip.ZipOutputStream;   
  9. public class Zip {   
  10.   static final int BUFFER = 2048;   
  11.   public static void main(String argv[]) {   
  12.     try {   
  13.       BufferedInputStream origin = null;   
  14.       FileOutputStream dest = new FileOutputStream("E:\\test\\myfiles.zip");   
  15.       ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(dest));   
  16.       byte data[] = new byte[BUFFER];   
  17.       File f = new File("e:\\test\\a\\");   
  18.       File files[] = f.listFiles();   
  19.       for (int i = 0; i < files.length; i++) {   
  20.         FileInputStream fi = new FileInputStream(files[i]);   
  21.         origin = new BufferedInputStream(fi, BUFFER);   
  22.         ZipEntry entry = new ZipEntry(files[i].getName());   
  23.         out.putNextEntry(entry);   
  24.         int count;   
  25.         while ((count = origin.read(data, 0, BUFFER)) != -1) {   
  26.           out.write(data, 0, count);   
  27.         }   
  28.         origin.close();   
  29.       }   
  30.       out.close();   
  31.     } catch (Exception e) {   
  32.       e.printStackTrace();   
  33.     }   
  34.   }   
  35. }  
 
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class Zip {
  static final int BUFFER = 2048;
  public static void main(String argv[]) {
    try {
      BufferedInputStream origin = null;
      FileOutputStream dest = new FileOutputStream("E:\\test\\myfiles.zip");
      ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(dest));
      byte data[] = new byte[BUFFER];
      File f = new File("e:\\test\\a\\");
      File files[] = f.listFiles();
      for (int i = 0; i < files.length; i++) {
        FileInputStream fi = new FileInputStream(files[i]);
        origin = new BufferedInputStream(fi, BUFFER);
        ZipEntry entry = new ZipEntry(files[i].getName());
        out.putNextEntry(entry);
        int count;
        while ((count = origin.read(data, 0, BUFFER)) != -1) {
          out.write(data, 0, count);
        }
        origin.close();
      }
      out.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

2,解压缩的。
Java代码 复制代码
  1.     
  2. import java.io.BufferedInputStream;   
  3. import java.io.BufferedOutputStream;   
  4. import java.io.File;   
  5. import java.io.FileOutputStream;   
  6. import java.util.Enumeration;   
  7. import java.util.zip.ZipEntry;   
  8. import java.util.zip.ZipFile;   
  9. public class UnZip {   
  10.   static final int BUFFER = 2048;   
  11.   public static void main(String argv[]) {   
  12.     try {   
  13.       String fileName = "E:\\test\\myfiles.zip";   
  14.       String filePath = "E:\\test\\";   
  15.       ZipFile zipFile = new ZipFile(fileName);   
  16.       Enumeration emu = zipFile.entries();   
  17.       int i = 0;   
  18.       while (emu.hasMoreElements()) {   
  19.         ZipEntry entry = (ZipEntry) emu.nextElement();   
  20.         // 会把目录作为一个file读出一次,所以只建立目录就可以,之下的文件还会被迭代到。   
  21.         if (entry.isDirectory()) {   
  22.           new File(filePath + entry.getName()).mkdirs();   
  23.           continue;   
  24.         }   
  25.         BufferedInputStream bis = new BufferedInputStream(zipFile.getInputStream(entry));   
  26.         File file = new File(filePath + entry.getName());   
  27.         // 加入这个的原因是zipfile读取文件是随机读取的,这就造成可能先读取一个文件   
  28.         // 而这个文件所在的目录还没有出现过,所以要建出目录来。   
  29.         File parent = file.getParentFile();   
  30.         if (parent != null && (!parent.exists())) {   
  31.           parent.mkdirs();   
  32.         }   
  33.         FileOutputStream fos = new FileOutputStream(file);   
  34.         BufferedOutputStream bos = new BufferedOutputStream(fos, BUFFER);   
  35.         int count;   
  36.         byte data[] = new byte[BUFFER];   
  37.         while ((count = bis.read(data, 0, BUFFER)) != -1) {   
  38.           bos.write(data, 0, count);   
  39.         }   
  40.         bos.flush();   
  41.         bos.close();   
  42.         bis.close();   
  43.       }   
  44.       zipFile.close();   
  45.     } catch (Exception e) {   
  46.       e.printStackTrace();   
  47.     }   
  48.   }   
  49. }  
分享到:
评论

相关推荐

    java zip and unzip

    Java 提供了内置的支持来完成文件的压缩与解压缩操作,这些功能主要通过 `java.util.zip` 区域内的类实现。 #### 二、Zip 相关类介绍 - **ZipOutputStream**:用于创建 zip 压缩文件。 - **ZipEntry**:表示 zip ...

    Java_zip.rar_java zip_unzip_zip

    本教程将详细讲解如何在Java中进行ZIP文件的压缩与解压缩。 首先,我们来看`Zipper.java`和`Unzip.java`这两个类。它们分别实现了ZIP文件的压缩和解压缩功能。在Java中,`java.util.zip`包提供了对ZIP文件格式的...

    java zip unzip

    java zip unzipjava zip unzipjava zip unzipjava zip unzipjava zip unzipjava zip unzipjava zip unzipjava zip unzipjava zip unzipjava zip unzipjava zip unzipjava zip unzipjava zip unzip

    java解压zip压缩文件

    `UnZip.java`和`UnZip2.java`可能包含了不同的解压实现,例如,`UnZip2.java`可能会包含更高效或更复杂的解压逻辑,比如递归处理子目录、处理大型ZIP文件的优化、错误处理或进度指示等。这些文件可能使用了循环、...

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

    通过上述步骤,可以实现基于Java向ZIP压缩包追加文件的功能,虽然这个过程涉及解压和再压缩,但它是最常见的解决方案,因为Java的标准库不直接支持追加操作。在实际应用中,可以根据具体需求进行优化和调整,以满足...

    java zip解压中文乱码问题

    网上很多描述java解压中文乱码的问题,很多描述不全.由于工作需要整理出一个完整版.... new ZipUtil().unZip("E:\\aaaa\\中文.zip","E:\\aaaa\\中文","GBK"); } 实例: 将E:\\aaaa\\中文.zip解压到E:\\aaaa\\中文目录下

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

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

    linux zip unzip RPM安装包,亲测可用.rar

    在Linux操作系统中,`zip`和`unzip`是两个常用的命令行工具,用于压缩和解压文件。RPM(Red Hat Package Manager)是Linux发行版中广泛使用的软件包管理器,尤其在基于RPM的系统如CentOS、Fedora等上。本压缩包包含...

    java-ZIP-AND-UNZIP.zip_zip

    在Java编程语言中,处理ZIP压缩和解压缩是常见的任务,尤其在文件管理和数据传输方面。ZIP是一种广泛使用的文件格式,用于将多个文件打包到一个单一的可移植档案中,以便于存储、传输或备份。以下是一些关于Java中...

    java解压zip 可包含中文文件

    在Java编程环境中,处理压缩文件,特别是ZIP格式的文件...总的来说,解压包含中文文件名的ZIP文件在Java中可以通过正确设置编码和使用适当的库或工具来实现。理解文件名编码和选择合适的处理方法是解决这类问题的关键。

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

    在Java编程环境中,处理ZIP格式的压缩包是一项常见的任务,无论是为了读取文件内容、打包文件还是进行数据传输。本文将深入探讨如何使用Java来解压ZIP格式的压缩包,并提供相关的源码参考。 首先,我们需要了解Java...

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

    我们将讨论核心的Java API,如`java.util.zip`包中的类,并通过一个名为`CompressFileUtils`的工具类来展示如何实现文件的解压缩功能。 首先,`java.util.zip`包提供了几个关键类,用于处理各种压缩格式,如`...

    java zip解压缩

    本文将详细讲解如何使用Java进行Zip文件的压缩与解压缩操作,并结合给定的标签"源码"和"工具"来探讨实际应用场景。 一、Java Zip压缩 1. 使用`ZipOutputStream`类进行压缩: `ZipOutputStream`是Java提供的用于...

    java加密解密zip压缩包

    本文将深入探讨如何使用Java实现这一功能,同时也会提及与ActionScript 3(AS3)进行加密解密的相关知识。 首先,我们要了解Java中的ZipOutputStream和ZipInputStream类,它们是Java标准库提供的用于创建和读取ZIP...

    java解压缩zip代码与用到的jar包

    在本篇中,我们将深入探讨如何使用Java API来实现ZIP文件的解压缩,以及可能需要用到的第三方库。 首先,Java标准库(Java Standard Library)自身提供了对ZIP文件的支持。在`java.util.zip`包中,有两个关键类用于...

    java zip压缩解压工具解决中文乱码问题

    在Java编程中,处理压缩和解压缩ZIP文件是一项常见的任务,尤其当文件中包含中文字符时,可能会遇到中文乱码的问题。这是因为Java的标准库在处理非ASCII编码时可能存在不足。本篇文章将详细介绍如何使用Java标准库...

    java解压ZIP文件

    ### Java 解压ZIP文件知识点详解 #### 一、概述 在Java编程中,解压缩ZIP文件是一项常见的任务,尤其在处理归档文件或备份时。本文将深入探讨如何使用Java来解压ZIP文件,并通过一个具体的示例代码来展示整个过程。...

    java打包目录文件为ZIP

    通过上述示例代码,我们可以清晰地了解到如何使用 Java 实现目录文件的 ZIP 压缩与解压。该示例不仅提供了基础的压缩解压逻辑,还包含了递归处理文件夹的能力,使得程序能够应对更复杂的场景需求。

    java对zip、rar文件的压缩和解压缩

    本文将详细介绍如何使用Java语言实现ZIP和RAR格式文件的压缩与解压缩操作。文章通过具体的代码示例展示了整个处理流程,并针对不同格式文件的特点进行了优化。 #### ZIP文件的压缩与解压缩 ##### 压缩原理与API...

    java zip 压缩 解压缩 附带ant.jar

    首先,让我们来看一下`JavaZip.java`这个文件。它很可能包含了一个示例程序,演示了如何使用Java API来压缩和解压缩文件。在Java中,我们通常使用`ZipOutputStream`来创建ZIP文件,`ZipInputStream`来读取和解压缩...

Global site tag (gtag.js) - Google Analytics