`
hwei_344370758
  • 浏览: 21464 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JAVA 解压ZIP

    博客分类:
  • java
阅读更多
/*
提供zip文件的解压缩接口:
AdapterZipFile:
   输入:zipFileName(zip文件的绝对路径),outputDirectory(zip文件解压缩后的存放路径)
   输出:
   说明:初始化函数
unZipFile:
   输入:无
   输出:
   说明:解压缩zip文件,解压缩后存放到outputDirectory路径下
GetZipFileList:
   输入:无
   输出:list
   说明:解压缩后的文件列表绝对路径存放在ArrayList动态数组中
*/


package com.mop.pushmail.adapter.htmlziprar;

import java.io.*;
import java.util.*;
import org.apache.tools.zip.*;

public class AdapterZipFile {
    String zipFileName = null;//zip文件的绝对路径
    String outputDirectory = null;//zip文件解压缩后的存放路径
    ArrayList list = new ArrayList();//文件解压缩后的文件列表绝对路径

//    public AdapterZipFile(String zipFileName) {
//        if(zipFileName == null){
//            return;
//        }
//        this.zipFileName = zipFileName.replace("/","\\");
//        unZipFile();
//    }

    //初始化
    public AdapterZipFile(String zipFileName, String outputDirectory){
        if(zipFileName == null){
            return;
        }
        this.zipFileName = zipFileName;
        if(outputDirectory != null){
             this.outputDirectory = outputDirectory;
        }else{
            this.outputDirectory = zipFileName.substring(0,
                    zipFileName.replace('\\', '/').lastIndexOf("/"));
        }
       // unZipFile();
    }
//创建目录
    private void createDirectory(String directory, String subDirectory) {
        String dir[];
        File fl = new File(directory);
        try {
            if (subDirectory == "" && fl.exists() != true)
                fl.mkdirs();
            else if (subDirectory != "") {
                dir = subDirectory.replace("\\","/").split("/");
                for (int i = 0; i < dir.length; i++) {
                    File subFile = new File(directory + File.separator + dir[i]);
                    if (!subFile.exists())
                        subFile.mkdir();
                    directory += File.separator + dir[i];
                }
            }
        }catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
    }

    //解压缩文件
    //如果outputDierctory为null,解压到zipFileName文件的当前目录下
    public void unZipFile() {
        File file = new File(zipFileName);
        if (!file.exists()) {
            return;
        }
        createDirectory(outputDirectory, "");

        try {
            ZipFile zipFile = new ZipFile(zipFileName);
            Enumeration e = zipFile.getEntries();
            ZipEntry zipEntry = null;
            while (e.hasMoreElements()) {
                zipEntry = (ZipEntry) e.nextElement();
                if (zipEntry.isDirectory()) {
                    String name = zipEntry.getName();
                    name = name.substring(0, name.length() - 1);
                    File f = new File(outputDirectory + File.separator + name);
                    f.mkdir();
                } else {
                    String fileName = zipEntry.getName();
                    fileName = fileName.replace('\\', '/');
                    //文件在多层目录下 这时需要创建目录如:d1/d2/1.txt
                    if (fileName.indexOf("/") != -1) {
                        createDirectory(outputDirectory, fileName.substring(0,
                                fileName.lastIndexOf("/")));
                        fileName = fileName.substring(
                                fileName.lastIndexOf("/") + 1, fileName
                                .length());
                    }

                    list.add(outputDirectory + File.separator
                                      + zipEntry.getName());
                    File f = new File(outputDirectory + File.separator
                                      + zipEntry.getName());

                    f.createNewFile();
                    InputStream in = zipFile.getInputStream(zipEntry);
                    FileOutputStream out = new FileOutputStream(f);

                    byte[] by = new byte[1024];
                    int c;
                    while ((c = in.read(by)) != -1) {
                        out.write(by, 0, c);
                    }
                    out.close();
                    in.close();
                }
            }
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
    }

   //返回zip文件解压撒后文件列表的绝对路径
    public ArrayList GetZipFileList(){
        return list;
    }
}
分享到:
评论

相关推荐

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

    在给定的压缩包文件中,包含了一个名为"JAVA解压ZIP格式的压缩包.docx"的文档,这可能是对解压过程的详细说明或补充信息。在实际操作中,你可以将上述代码与这个文档结合,以获得更深入的理解和实践指导。

    JAVA解压ZIP多层目录文件(需ant.jar

    ### JAVA解压ZIP多层目录文件(需ant.jar) #### 概述 本文将详细介绍一个Java方法,该方法用于解压包含多层目录结构的ZIP文件,并能够支持中文文件名。这种方法利用了Apache Ant库中的`org.apache.tools.zip....

    java解压zip压缩文件

    在Java编程环境中,解压ZIP压缩文件是一项常见的任务,它涉及到文件I/O操作以及对...`UnZip.java`和`UnZip2.java`文件可能是这种功能的具体实现,通过阅读它们的源代码,可以深入了解Java解压ZIP文件的各种策略和技巧。

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

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

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

    以下是一个基本的Java代码示例,演示如何解压缩ZIP文件: ```java import java.io.*; import java.util.zip.*; public class UnzipExample { public static void unzip(String zipFilePath, String destDirectory...

    java 解压缩zip文件

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

    java解压zip 可包含中文文件

    在Java编程环境中,处理压缩文件,特别是ZIP格式的文件,是一项常见的任务。有时,这些压缩文件可能包含中文文件名,这在处理时可能会遇到编码问题。`java.util.zip`库是Java标准库的一部分,提供了对ZIP文件的支持...

    java解压zip格式文件

    在Java编程环境中,处理压缩文件是一项常见的任务,特别是在数据传输、存储优化或应用程序资源管理时。Zip格式是一种广泛使用的文件...通过掌握这些基础,开发者可以轻松地在Java应用程序中实现Zip文件的解压缩功能。

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

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

    JAVA解压缩ZIP压缩文件(含中文名文件)完整DEMO

    本篇文章将详细讲解如何使用Java来解压缩ZIP格式的压缩文件,特别是那些包含中文文件名的压缩包。我们将探讨相关API的使用,以及解决中文文件名在解压过程中可能出现的问题。 1. **Java的压缩与解压缩库**: Java...

    使用java解压缩zip文件

    在Java编程环境中,解压ZIP文件是一项常见的任务,特别是在处理数据传输、文件打包或系统...以上就是使用Java解压ZIP文件的基本步骤和关键知识点。通过理解并应用这些概念,你可以轻松地处理任何ZIP文件的解压缩任务。

    Java解压zip文件完整代码分享

    以下是一个详细的Java解压ZIP文件的代码示例,我们将深入探讨这个过程。 首先,我们需要引入Apache Commons Compress库,可以通过Maven或Gradle将其添加到项目依赖中。如果你的项目不使用任何构建工具,你可以手动...

    java解压缩ZIP文件

    ### Java解压缩ZIP文件:深度解析与实践 #### 核心知识点概览: - **Java I/O与网络数据流统一接口**:Java的1.1版本提供了统一的接口来处理I/O数据流与网络数据流,这使得数据的压缩、传输和解压缩变得简单而高效...

    java压缩解压ZIP

    java压缩解压ZIP

    java zip解压中文乱码问题

    网上很多描述java解压中文乱码的问题,很多描述不全.由于工作需要整理出一个完整版.简单实用.下载后请从ZipUtil.java的main方法开始,一目了然. public static void main(String args[]) { new ZipUtil().unZip("E:\\...

    java解压ZIP文件

    在Java编程中,解压缩ZIP文件是一项常见的任务,尤其在处理归档文件或备份时。本文将深入探讨如何使用Java来解压ZIP文件,并通过一个具体的示例代码来展示整个过程。 #### 二、关键概念与技术栈 在进行ZIP文件的...

    java 解压zip包

    以下是一个简单的步骤,概述了如何使用Java解压ZIP文件: 1. **打开ZIP文件**:使用`FileInputStream`打开ZIP文件,然后用`ZipInputStream`包装这个输入流,以便读取ZIP格式的数据。 ```java FileInputStream fis ...

    java zipentry.jar 解决解压失败问题

    在Java编程中,处理压缩文件,如ZIP格式,是一项常见的任务。然而,当ZIP文件包含中文文件名时,可能会遇到解压失败的问题。这主要源于字符编码不匹配或处理方式不当。本文将深入探讨这个问题,并提供解决方案。 ...

Global site tag (gtag.js) - Google Analytics