`
djlijian
  • 浏览: 29787 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java解压缩Zip 文件

阅读更多
package com.test;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;

public class TestZip {

/**
* zip压缩功能测试. 将d:\\temp\\zipout目录下的所有文件连同子目录压缩到d:\\temp\\out.zip.
*
* @throws Exception
*/
@SuppressWarnings("unchecked")
public void CreateZip(String zipUrl, String zipName) throws Exception {
// 压缩baseDir下所有文件,包括子目录
String baseDir = zipUrl;
List fileList = getSubFiles(new File(baseDir));

// 压缩文件名
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipName));

ZipEntry ze = null;
byte[] buf = new byte[1024];
int readLen = 0;
for (int i = 0; i < fileList.size(); i++) {
File f = (File) fileList.get(i);
System.out.print("Adding: " + f.getPath() + f.getName());

// 创建一个ZipEntry,并设置Name和其它的一些属性
ze = new ZipEntry(getAbsFileName(baseDir, f));
ze.setSize(f.length());
ze.setTime(f.lastModified());

// 将ZipEntry加到zos中,再写入实际的文件内容
zos.putNextEntry(ze);
InputStream is = new BufferedInputStream(new FileInputStream(f));
while ((readLen = is.read(buf, 0, 1024)) != -1) {
zos.write(buf, 0, readLen);
}
is.close();
System.out.println("   done...");
}
zos.close();
}

/**
* 取得指定目录下的所有文件列表,包括子目录.
*
* @param baseDir
*            File 指定的目录
* @return 包含java.io.File的List
*/
@SuppressWarnings("unchecked")
private List getSubFiles(File baseDir) {
List ret = new ArrayList();
// File base=new File(baseDir);
File[] tmp = baseDir.listFiles();
for (int i = 0; i < tmp.length; i++) {
if (tmp[i].isFile()) {
ret.add(tmp[i]);
}
if (tmp[i].isDirectory()) {
ret.addAll(getSubFiles(tmp[i]));
}
}
return ret;
}

/**
* 给定根目录,返回另一个文件名的相对路径,用于zip文件中的路径.
*
* @param baseDir
*            java.lang.String 根目录
* @param realFileName
*            java.io.File 实际的文件名
* @return 相对文件名
*/
private String getAbsFileName(String baseDir, File realFileName) {
File real = realFileName;
File base = new File(baseDir);
String ret = real.getName();
while (true) {
real = real.getParentFile();
if (real == null)
break;
if (real.equals(base))
break;
else {
ret = real.getName() + "/" + ret;
}
}
return ret;
}
public static void main(String[] args) {
TestZip.zipFile();
// TestZip.unzip(url, dest);
}
/**
* 解压缩zip文件
*/
@SuppressWarnings("unchecked")
public static void unzip(String zipFile, String dest) throws Exception {

//   String ctxUrl = ServletActionContext.getRequest().getRealPath("/upload");
//   String url = ctxUrl + "\\" + fileName;
//        String dest = ctxUrl;
//   zipFile = url;
  ZipFile zip = new ZipFile(zipFile);  
  Enumeration<ZipEntry> en = (Enumeration)zip.entries();
  ZipEntry entry = null;
  byte[] buffer = new byte[1024];  
  int length = -1;  
  InputStream input = null;  
  BufferedOutputStream bos = null;  
  File file = null;  
 
  while (en.hasMoreElements()){
entry = (ZipEntry) en.nextElement();  
if (entry.isDirectory()) {
   file = new File(dest, entry.getName());  
   if (!file.exists()){  
   file.mkdir();  
   }
continue;
   }
 
   input = zip.getInputStream(entry);
   file = new File(dest, entry.getName());
   if (!file.getParentFile().exists()){
    file.getParentFile().mkdirs();
   }
   bos = new BufferedOutputStream(new FileOutputStream(file));
 
   while (true){
    length = input.read(buffer);
    if (length == -1)
     break;
    bos.write(buffer, 0, length);
   }
   bos.close();
   input.close();
  }
  zip.close();
}


}
分享到:
评论

相关推荐

    java 解压缩zip文件

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

    java解压缩ZIP文件

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

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

    二、Java解压缩ZIP文件 解压缩ZIP文件则可以使用`ZipInputStream`。以下是一个简单的解压示例: ```java import java.io.*; import java.util.zip.*; public class UnzipExample { public static void main...

    java解压缩zip文件

    zip格式是一种免费的压缩文件格式,我们可以通过java类库编写函数来解压缩它,实现winwar这类软件的功能。

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

    `ZipInputStream`是用于读取ZIP文件的输入流,而`ZipEntry`代表ZIP文件中的一个条目,即一个单独的压缩文件。 解压ZIP文件的基本步骤如下: 1. 创建一个`FileInputStream`对象,指向ZIP文件路径。 2. 使用`...

    使用java解压缩zip文件

    本篇文章将深入探讨如何使用Java API来实现ZIP文件的解压缩,并提供详细的注释帮助理解代码逻辑。 首先,我们需要了解Java中的`java.util.zip`包,这个包提供了处理压缩文件格式(如ZIP和GZIP)所需的所有类。其中...

    Java解压缩ZIP文件同时包含Jar包解决ZIP包中含有中文名称信息的文件

    博文链接:https://peng-jian-ming.iteye.com/blog/190572

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

    本系统运用LZ77字典算法、懒惰匹配算法和Huffman编码算法,使用Java语言在Jbuilder2006环境下设计了使用GZIP算法对文件压缩与解压缩的实现程序。用户可以根据自己的需求,使用此程序方便地对文件进行压缩或者解压缩...

    poi.zip java读取excel文件

    Java 读取 Excel 文件是许多开发任务中的常见需求,Apache POI 是一个广泛使用的开源库,专门用于处理 Microsoft Office 格式的文件,包括 Excel。在本案例中,提供的压缩包 "poi.zip" 包含了两个子文件:poi-bin-...

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

    以下是解压缩ZIP文件的基本步骤: 1. 创建一个`FileInputStream`对象,指向ZIP文件。 2. 使用`FileInputStream`创建`ZipInputStream`对象。 3. 通过`ZipInputStream`的`getNextEntry()`方法遍历ZIP文件中的每个条目...

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

    Java的`java.util.zip`包提供了对ZIP文件的支持,包括`ZipInputStream`和`ZipOutputStream`类用于读写ZIP文件,以及`ZipEntry`类来代表ZIP文件中的单个条目。当我们尝试用这些类解压含有中文名的文件时,如果未正确...

    java解压.zip或.jar文件.pdf

    在本篇文章中,我们将探讨 Java 解压缩文件的操作,包括解压缩 ZIP 和 JAR 文件,并讨论如何使用 Java 解压缩 RAR 文件。 解压缩 ZIP 和 JAR 文件 ZIP 和 JAR 文件是两种常见的压缩文件格式,Java 提供了 ...

    java excel 读取 用 zip 方式。不用第三方包

    /** * 根据 策划的配置表来生成 json * excel 目前使用的版本为2007,其他版本未测试... * 读取文件 一般用于本地文件的生成, * 二进制的方式,一般用于 后台管理界面 的文件上传后的处理。 * @author wgq * */

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

    本主题将深入讲解如何使用Java来解压缩ZIP文件,并介绍相关库和具体实现方法。 标题提到的"java解压缩zip代码与用到的jar包"主要涉及了Java对ZIP文件的操作,以及一个名为`ant.jar`的第三方库。`ant.jar`是Apache ...

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

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

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

    - **解压缩任务**:使用`unzip`任务可以解压缩Zip文件到指定的目标目录。 - **Ant脚本**:Ant通过XML格式的构建文件来定义任务,这使得整个过程可配置且易于自动化。 在实际应用中,如果你的项目依赖于这两个库,...

Global site tag (gtag.js) - Google Analytics