`
wlhok
  • 浏览: 56889 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java 压缩解压缩文件

    博客分类:
  • Java
阅读更多

使用org.apache.tools.zip包来压缩解压缩文件。

java 代码
  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. }   
分享到:
评论
2 楼 七色花-许愿 2013-08-08  
every 写道
借鉴
谢谢

1 楼 every 2009-02-27  
借鉴
谢谢

相关推荐

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

    在Java编程语言中,文件的压缩与解压缩是常见的数据处理操作,特别是在数据传输、存储优化和备份场景中。本实践项目围绕这个主题展开,包括源代码和相关的论文,为学习者提供了深入理解和应用Java压缩库的机会。以下...

    (Java毕业设计)JAVA文件压缩与解压缩实践(源代码+).rar

    (Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业...

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

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

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

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

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

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

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

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

    java自动解压缩文件

    Java自动解压缩文件是编程领域中的一个重要话题,尤其是在服务器端应用中,经常需要处理上传的压缩文件并进行解压操作。Java提供了丰富的API来支持这一功能,主要涉及到`java.util.zip`包中的类,如`ZipInputStream`...

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

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

    java压缩文件解压缩和文件的压缩

    3. **解压缩文件**: `ZipInputStream`可以用来读取和解压缩ZIP文件。创建`ZipInputStream`,然后循环读取每个`ZipEntry`,创建对应的文件或目录,并将数据写入。 4. **RAR文件处理**: 对于RAR格式,Java标准库没有...

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

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

    Java实现压缩解压缩文件和文件夹(附源码)

    Java实现压缩解压缩文件和文件夹(附源码) zip unzip 压缩 解压缩

    java文件解压缩工具箱及案例

    在Java编程环境中,处理文件的压缩与解压缩是一项常见的任务,尤其在数据传输、存档或备份场景下。本主题将深入探讨如何使用Java来创建一个文件解压缩工具箱,特别关注支持ZIP和RAR格式,并解决中文乱码问题。首先,...

    java 解压缩zip文件

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

    使用Java API进行tar.gz文件及文件夹压缩解压缩.docx

    ame()); tOut.putArchiveEntry(tarEntry);...通过引入该库,我们可以轻松地在 Java 程序中实现文件和文件夹的压缩与解压缩功能。在实际开发中,注意错误处理、资源管理以及安全性等方面,以确保程序的健壮性和安全性。

    文件压缩解压缩

    - **错误处理和验证**:工具类应该包含了错误处理机制,如处理文件不存在、权限不足或压缩文件损坏等情况。同时,解压缩后,可能会通过比较原始文件和解压缩后的文件哈希值来验证数据一致性。 - **API设计**:为了...

Global site tag (gtag.js) - Google Analytics