`
ssxxjjii
  • 浏览: 948746 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA实现实用的ZIP压缩与解压

 
阅读更多

程序实现了ZIP压缩。共分为2部分 : 压缩(compression)与解压(decompression)

大致功能包括用了多态,递归等JAVA核心技术,可以对单个文件和任意级联文件夹进行压缩和解压。 需在代码中自定义源输入路径和目标输出路径。 

[java] view plaincopy
  1. package com.han;  
  2.   
  3. import java.io.*;  
  4. import java.util.zip.*;  
  5.   
  6. /** 
  7.  * 程序实现了ZIP压缩。共分为2部分 : 压缩(compression)与解压(decompression) 
  8.  * <p> 
  9.  * 大致功能包括用了多态,递归等JAVA核心技术,可以对单个文件和任意级联文件夹进行压缩和解压。 需在代码中自定义源输入路径和目标输出路径。 
  10.  * <p> 
  11.  * 在本段代码中,实现的是压缩部分;解压部分见本包中Decompression部分。 
  12.  *  
  13.  * @author HAN 
  14.  *  
  15.  */  
  16.   
  17. public class MyZipCompressing {  
  18.     private int k = 1// 定义递归次数变量  
  19.   
  20.     public MyZipCompressing() {  
  21.         // TODO Auto-generated constructor stub  
  22.     }  
  23.   
  24.     /** 
  25.      * @param args 
  26.      */  
  27.     public static void main(String[] args) {  
  28.         // TODO Auto-generated method stub  
  29.         MyZipCompressing book = new MyZipCompressing();  
  30.         try {  
  31.             book.zip("C:\\Users\\Gaowen\\Desktop\\ZipTestCompressing.zip",  
  32.                     new File("C:\\Users\\Gaowen\\Documents\\Tencent Files"));  
  33.         } catch (Exception e) {  
  34.             // TODO Auto-generated catch block  
  35.             e.printStackTrace();  
  36.         }  
  37.   
  38.     }  
  39.   
  40.     private void zip(String zipFileName, File inputFile) throws Exception {  
  41.         System.out.println("压缩中...");  
  42.         ZipOutputStream out = new ZipOutputStream(new FileOutputStream(  
  43.                 zipFileName));  
  44.         BufferedOutputStream bo = new BufferedOutputStream(out);  
  45.         zip(out, inputFile, inputFile.getName(), bo);  
  46.         bo.close();  
  47.         out.close(); // 输出流关闭  
  48.         System.out.println("压缩完成");  
  49.     }  
  50.   
  51.     private void zip(ZipOutputStream out, File f, String base,  
  52.             BufferedOutputStream bo) throws Exception { // 方法重载  
  53.         if (f.isDirectory()) {  
  54.             File[] fl = f.listFiles();  
  55.             if (fl.length == 0) {  
  56.                 out.putNextEntry(new ZipEntry(base + "/")); // 创建zip压缩进入点base  
  57.                 System.out.println(base + "/");  
  58.             }  
  59.             for (int i = 0; i < fl.length; i++) {  
  60.                 zip(out, fl[i], base + "/" + fl[i].getName(), bo); // 递归遍历子文件夹  
  61.             }  
  62.             System.out.println("第" + k + "次递归");  
  63.             k++;  
  64.         } else {  
  65.             out.putNextEntry(new ZipEntry(base)); // 创建zip压缩进入点base  
  66.             System.out.println(base);  
  67.             FileInputStream in = new FileInputStream(f);  
  68.             BufferedInputStream bi = new BufferedInputStream(in);  
  69.             int b;  
  70.             while ((b = bi.read()) != -1) {  
  71.                 bo.write(b); // 将字节流写入当前zip目录  
  72.             }  
  73.             bi.close();  
  74.             in.close(); // 输入流关闭  
  75.         }  
  76.     }  
  77. }  


 

[java] view plaincopy
  1. package com.han;  
  2.   
  3. import java.io.*;  
  4. import java.util.zip.*;  
  5. /** 
  6.  * 程序实现了ZIP压缩。共分为2部分 : 
  7.  * 压缩(compression)与解压(decompression) 
  8.  * <p> 
  9.  * 大致功能包括用了多态,递归等JAVA核心技术,可以对单个文件和任意级联文件夹进行压缩和解压。 
  10.  * 需在代码中自定义源输入路径和目标输出路径。 
  11.  * <p> 
  12.  * 在本段代码中,实现的是解压部分;压缩部分见本包中compression部分。 
  13.  * @author HAN 
  14.  * 
  15.  */  
  16. public class CopyOfMyzipDecompressing {  
  17.       
  18.     public static void main(String[] args) {  
  19.         // TODO Auto-generated method stub  
  20.         long startTime=System.currentTimeMillis();  
  21.         try {  
  22.             ZipInputStream Zin=new ZipInputStream(new FileInputStream(  
  23.                     "C:\\Users\\HAN\\Desktop\\stock\\SpectreCompressed.zip"));//输入源zip路径  
  24.             BufferedInputStream Bin=new BufferedInputStream(Zin);  
  25.             String Parent="C:\\Users\\HAN\\Desktop"//输出路径(文件夹目录)  
  26.             File Fout=null;  
  27.             ZipEntry entry;  
  28.             try {  
  29.                 while((entry = Zin.getNextEntry())!=null && !entry.isDirectory()){  
  30.                     Fout=new File(Parent,entry.getName());  
  31.                     if(!Fout.exists()){  
  32.                         (new File(Fout.getParent())).mkdirs();  
  33.                     }  
  34.                     FileOutputStream out=new FileOutputStream(Fout);  
  35.                     BufferedOutputStream Bout=new BufferedOutputStream(out);  
  36.                     int b;  
  37.                     while((b=Bin.read())!=-1){  
  38.                         Bout.write(b);  
  39.                     }  
  40.                     Bout.close();  
  41.                     out.close();  
  42.                     System.out.println(Fout+"解压成功");      
  43.                 }  
  44.                 Bin.close();  
  45.                 Zin.close();  
  46.             } catch (IOException e) {  
  47.                 // TODO Auto-generated catch block  
  48.                 e.printStackTrace();  
  49.             }  
  50.         } catch (FileNotFoundException e) {  
  51.             // TODO Auto-generated catch block  
  52.             e.printStackTrace();  
  53.         }  
  54.         long endTime=System.currentTimeMillis();  
  55.         System.out.println("耗费时间: "+(endTime-startTime)+" ms");  
  56.     }  
  57.   
  58. }  
分享到:
评论

相关推荐

    Java实现的带密码压缩与解压zip文件源码

    本项目专注于使用Java实现带密码保护的ZIP文件的压缩和解压功能。这是一项安全措施,允许用户对敏感文件进行加密,以防止未经授权的访问。 在Java中,我们可以利用`java.util.zip`包提供的类来实现这一目标。`...

    Java实现Zip的压缩和解压

    NULL 博文链接:https://zhenyong.iteye.com/blog/1576148

    java 文件zip 压缩与解压

    java 文件zip 压缩与解压 可以直接调用

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

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

    java解压zip压缩文件

    在Java编程环境中,解压ZIP压缩文件是一项常见的任务,它涉及到文件I/O操作以及对ZIP文件格式的理解。本文将深入探讨如何使用Java实现这一功能,同时也会提及`UnZip.java`和`UnZip2.java`这两个文件可能包含的实现...

    java实现的解压与压缩 zip和rar类型的

    本文将深入探讨如何使用Java实现ZIP和RAR类型的压缩与解压操作,以及相关知识点。 首先,我们来看ZIP文件格式。ZIP是一种广泛使用的文件压缩格式,其在Java中的处理主要通过`java.util.zip`包。这个包提供了多个类...

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

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

    使用 Java 实现的压缩/解压 ZIP 文件的工具类

    本文将深入探讨如何使用Java实现ZIP文件的压缩与解压,重点讲解核心API,如`java.util.zip`包中的`ZipOutputStream`和`ZipInputStream`。 首先,我们来了解一下ZIP文件格式。ZIP是一种用于存储多个文件到一个单一...

    实现java文件压缩与解压

    ### 实现Java文件压缩与解压 #### 一、引言 在计算机科学领域,文件压缩与解压是一项非常实用的技术。它不仅能够减少文件占用的空间,提高存储效率,还能加速文件在网络中的传输速度。Java作为一种广泛使用的编程...

    用java.util.zip包现数据压缩与解压

    ### 使用 Java.util.zip 包实现数据压缩与解压 在计算机科学领域,数据压缩技术是一项重要的功能,它能够帮助减少存储空间的需求以及提高网络传输效率。本文将通过一系列的示例来详细介绍如何利用 Java 中的 `java....

    Java实现文件的压缩和解压

    基于GUI用IO流中的ZipOutputStream ,ZipInputStream实现文件的解压与压缩, 如文件解压函数如下 private void unZip(String zipFileName, String outputDirectory)throws Exception { InputStream in=null; ...

    Java实现将多目录多层级文件打成ZIP包,以及解压ZIP包

    本文将详细讲解如何使用Java实现将多目录多层级的文件打成ZIP包,以及如何解压这些ZIP包。我们将主要关注`FileUtils.java`这个类,以及依赖的`commons-compress-1.1.jar`库。 `commons-compress-1.1.jar`是Apache ...

    java压缩解压ZIP

    java压缩解压ZIP

    java将文件夹压缩成zip,解压zip压缩包

    本篇文章将详细探讨如何使用Java内置的IO流来实现文件夹的zip压缩以及zip压缩包的解压,无需依赖其他的第三方库如Apache Commons IO或JavaZip。 ### 文件夹压缩成ZIP 首先,我们需要理解如何将一个文件夹及其内容...

    java 实现文件的压缩与解压

    在Java编程语言中,实现文件的压缩和解压是常见的任务,这有助于数据存储和传输。本示例将深入探讨如何使用Java的内置库来处理ZIP格式的压缩和解压缩。`java.util.zip`包提供了必要的类来实现这一功能。 首先,让...

    java Zip压缩解压

    总结来说,"java Zip压缩解压"涉及了Java标准库中的`java.util.zip`包,用于创建和读取ZIP文件;Apache Ant作为构建工具,可能用于自动化压缩和解压过程;而JUnit则用于编写和运行测试,确保代码的正确实现。在实际...

    Java zip 压缩/解压源码

    这个`Java zip 压缩/解压源码`的资源提供了一个简洁易用的API,使得开发者能够方便地对文件进行压缩和解压缩操作。下面我们将深入探讨Java中处理`zip`文件的相关知识。 1. **Java ZipFile类**: `java.util.zip....

    Java压缩解压ZIP之Zip4j

    这篇博客文章“Java压缩解压ZIP之Zip4j”可能详细介绍了如何使用Zip4j进行文件的压缩和解压缩操作。 首先,我们需要了解Zip4j库的核心概念。Zip4j提供了一个名为`ZipFile`的类,它代表一个ZIP文件,包含了所有与ZIP...

    java版zip压缩解压代码

    `java版zip压缩解压代码`提供了在命令行环境中实现这一功能的程序。这个程序主要利用了Java的内置库,尤其是`java.util.zip`包中的类,如`ZipOutputStream`和`ZipInputStream`,来实现对文件和文件夹的ZIP压缩与解压...

    java jar包 ZIp压缩解压 数据库连接驱动 XML解析

    在Java编程领域,有三个关键知识点紧密关联:Java JAR包、ZIP压缩解压和XML解析,以及数据库连接驱动。让我们逐一深入探讨这些主题。 首先,Java JAR(Java Archive)包是Java平台的一种归档格式,用于集合多个类...

Global site tag (gtag.js) - Google Analytics