`

java压缩解压zip文件

阅读更多

转自:http://wlh.iteye.com/

  1. import java.io.File;   
  2. import java.io.FileInputStream;   
  3. import java.io.FileOutputStream;   
  4. import java.io.IOException;   
  5. import java.io.InputStream;   
  6. import java.util.Enumeration;   
  7. import org.apache.tools.zip.ZipEntry;   
  8. import org.apache.tools.zip.ZipFile;   
  9. import org.apache.tools.zip.ZipOutputStream;   
  10.   
  11. public class CompressFile {   
  12.     private static CompressFile instance = new CompressFile();   
  13.        
  14.     private CompressFile() {   
  15.     }   
  16.        
  17.     public static CompressFile getInstance() {   
  18.         return instance;   
  19.     }   
  20.   
  21.     public synchronized void zip(String inputFilename, String zipFilename)   
  22.             throws IOException {   
  23.         zip(new File(inputFilename), zipFilename);   
  24.     }   
  25.        
  26.     public synchronized void zip(File inputFile, String zipFilename) throws IOException {   
  27.         ZipOutputStream out = new ZipOutputStream(new FileOutputStream(   
  28.                 zipFilename));   
  29.   
  30.         try {   
  31.             zip(inputFile, out, "");   
  32.         } catch (IOException e) {   
  33.             throw e;   
  34.         } finally {   
  35.             out.close();   
  36.         }   
  37.     }   
  38.   
  39.     private synchronized void zip(File inputFile, ZipOutputStream out, String base)   
  40.             throws IOException {   
  41.         if (inputFile.isDirectory()) {   
  42.             File[] inputFiles = inputFile.listFiles();   
  43.             out.putNextEntry(new ZipEntry(base + "/"));   
  44.             base = base.length() == 0 ? "" : base + "/";   
  45.             for (int i = 0; i < inputFiles.length; i++) {   
  46.                 zip(inputFiles[i], out, base + inputFiles[i].getName());   
  47.             }   
  48.   
  49.         } else {   
  50.             if (base.length() > 0) {   
  51.                 out.putNextEntry(new ZipEntry(base));   
  52.             } else {   
  53.                 out.putNextEntry(new ZipEntry(inputFile.getName()));   
  54.             }   
  55.   
  56.             FileInputStream in = new FileInputStream(inputFile);   
  57.             try {   
  58.                 int c;   
  59.                 byte[] by = new byte[BUFFEREDSIZE];   
  60.                 while ((c = in.read(by)) != -1) {   
  61.                     out.write(by, 0, c);   
  62.                 }   
  63.             } catch (IOException e) {   
  64.                 throw e;   
  65.             } finally {   
  66.                 in.close();   
  67.             }   
  68.         }   
  69.     }   
  70.   
  71.     public synchronized void unzip(String zipFilename, String outputDirectory)   
  72.             throws IOException {   
  73.         File outFile = new File(outputDirectory);   
  74.         if (!outFile.exists()) {   
  75.             outFile.mkdirs();   
  76.         }   
  77.   
  78.         ZipFile zipFile = new ZipFile(zipFilename);   
  79.         Enumeration en = zipFile.getEntries();   
  80.         ZipEntry zipEntry = null;   
  81.         while (en.hasMoreElements()) {   
  82.             zipEntry = (ZipEntry) en.nextElement();   
  83.             if (zipEntry.isDirectory()) {   
  84.                 // mkdir directory   
  85.                 String dirName = zipEntry.getName();   
  86.                 dirName = dirName.substring(0, dirName.length() - 1);   
  87.   
  88.                 File f = new File(outFile.getPath() + File.separator + dirName);   
  89.                 f.mkdirs();   
  90.   
  91.             } else {   
  92.                 // unzip file   
  93.                 File f = new File(outFile.getPath() + File.separator   
  94.                         + zipEntry.getName());   
  95.                 f.createNewFile();   
  96.                 InputStream in = zipFile.getInputStream(zipEntry);   
  97.                 FileOutputStream out = new FileOutputStream(f);   
  98.                 try {   
  99.                     int c;   
  100.                     byte[] by = new byte[BUFFEREDSIZE];   
  101.                     while ((c = in.read(by)) != -1) {   
  102.                         out.write(by, 0, c);   
  103.                     }   
  104.                     // out.flush();   
  105.                 } catch (IOException e) {   
  106.                     throw e;   
  107.                 } finally {   
  108.                     out.close();   
  109.                     in.close();   
  110.                 }   
  111.             }   
  112.         }   
  113.     }   
  114.   
  115.     private static final int BUFFEREDSIZE = 1024;   
  116.        
  117.     public static void main(String[] args) {      
  118.         CompressFile bean = new CompressFile();      
  119.         try {      
  120.             bean.zip("d:/temp""d:/test.zip");      
  121.      
  122.             bean.unzip("d:/test.zip""d:/out/temp");      
  123.         } catch (IOException e) {      
  124.             e.printStackTrace();      
  125.         }      
  126.     }    
  127. }   
分享到:
评论

相关推荐

    用Java压缩解压ZIP文件

    用Java压缩解压ZIP文件,将利用java.util.zip 包中提供的类来实现压缩和解压zip 格式文件的功能。当然,本例在功能上完全没有Winzip 等成熟的压缩软件那么强,也不能做的很强,本例仅仅是演示如何来使用java.util....

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

    3. **解压缩文件** 解压ZIP文件则需要一个`ZipInputStream`实例,它包装在一个`FileInputStream`中,指向ZIP文件。通过调用`getNextEntry`方法,你可以逐个访问ZIP文件中的每个条目,然后创建相应的文件或目录,将...

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

    虽然Ant不直接用于解压缩文件,但可以与Java代码结合使用,例如通过Ant任务来调用`CompressFileUtils`进行解压缩操作。Ant提供了一系列的任务,如`unzip`,可以直接在构建脚本中用于解压缩文件。 至于标签“文件解...

    java解压zip压缩文件

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

    java 解压缩zip文件

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

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

    解压ZIP文件的过程相对简单,主要使用`ZipInputStream`和`FileOutputStream`。以下是解压的基本步骤: 1. **创建`ZipInputStream`**:使用`FileInputStream`打开ZIP文件,然后传递给`ZipInputStream`。 2. **读取`...

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

    - **解压缩文件**:使用`unzip()`方法可以解压缩整个Zip文件,或者通过`extractFile()`或`extractFolder()`方法提取指定的文件或目录。 - **加密**:`zip4j`支持AES 128/256位加密,你可以设置密码保护Zip文件,...

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

    1. **Java压缩库**:Java标准库提供了`java.util.zip`包,它包含了多种压缩和解压缩的类,如`ZipOutputStream`、`ZipInputStream`、`GZIPOutputStream`和`GZIPInputStream`,用于处理ZIP和GZIP格式的文件。...

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

    zipEntry.setComment("压缩文件"); // 可以添加注释,同样需要指定字符集 zos.putNextEntry(zipEntry); try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file))) { byte[] buffer...

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

    本文将深入探讨如何使用Java来解压ZIP格式的压缩包,并提供相关的源码参考。 首先,我们需要了解Java中的`java.util.zip`包,这个包提供了处理压缩文件的基本工具。在ZIP格式的压缩包处理中,我们主要会用到`...

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

    在Java编程环境中,处理压缩和解压缩文件是一项常见的任务,特别是在数据存储、文件传输和备份等领域。本项目专注于使用Java实现带密码保护的ZIP文件的压缩和解压功能。这是一项安全措施,允许用户对敏感文件进行...

    java压缩解压ZIP

    java压缩解压ZIP

    Java压缩解压ZIP之Zip4j

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

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

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

    详解Java无需解压直接读取Zip文件和文件内容

    Java无需解压直接读取Zip文件和文件内容是Java语言中的一种常见操作,通过使用java.util.zip包中的ZipFile、ZipInputStream和ZipEntry类,我们可以轻松地读取Zip文件和文件内容。下面,我们将详细介绍如何使用Java...

    JAVA解压缩ZIP或RAR格式的文件

    在Java编程环境中,解压缩ZIP或RAR格式的文件是一项常见的任务,这主要涉及到I/O流、文件操作以及压缩和解压缩库的使用。本篇将深入讲解如何在Java中实现这个功能,同时会介绍一些相关的工具和源码。 首先,对于ZIP...

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

    以上代码示例展示了如何使用Java的`java.util.zip`包创建和解压ZIP文件。这些工具类可以作为通用的ZIP操作函数库,适用于各种项目需求。注意,实际应用中可能需要添加错误处理和日志记录以增强健壮性。同时,对于大...

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

    在Java编程环境中,处理压缩和解压缩文件是常见的任务,主要涉及到两个标准库中的类:`java.util.zip`和第三方库如Apache Commons Compress。本文将深入探讨如何使用Java实现ZIP和RAR类型的压缩与解压操作,以及相关...

    java 压缩/解压 .zip/.rar/.tar 文件

    在提供的代码片段中,`unzipFile`方法展示了如何解压缩一个`.zip`文件。它首先创建一个`ZipFile`对象,然后遍历其中的所有`ZipEntry`,如果是目录,则创建对应的目录结构;如果是文件,则通过`getInputStream`获取流...

Global site tag (gtag.js) - Google Analytics