`

解压缩

阅读更多
本文来自CSDN博客:http://blog.csdn.net/googolplex/archive/2006/06/07/778386.aspx
import java.io.*;
import java.util.*;
import java.util.zip.*;
public class Unzip {
  public static void main(String[] args) {
    String unzipfile = "d:\\test\\test.zip"; //解压缩的文件名
    try {
      File olddirec = new File(unzipfile); //解压缩的文件路径(为了获取路径)
      ZipInputStream zin = new ZipInputStream(new FileInputStream(unzipfile));
      ZipEntry entry;
      //创建文件夹
      while ( (entry = zin.getNextEntry()) != null){
        if (entry.isDirectory()) {
          File directory = new File(olddirec.getParent(), entry.getName());
          if (!directory.exists())
            if (!directory.mkdirs())
              System.exit(0);
          zin.closeEntry();
        }
        if (!entry.isDirectory()) {
          File myFile = new File(entry.getName());
          FileOutputStream fout = new FileOutputStream("d:\\test\\"+myFile.getPath());
          DataOutputStream dout = new DataOutputStream(fout);
          byte[] b = new byte[1024];
          int len = 0;
          while ( (len = zin.read(b)) != -1) {
            dout.write(b, 0, len);
          }
          dout.close();
          fout.close();
          zin.closeEntry();
        }
      }
    }
    catch (IOException e) {
      e.printStackTrace();
      System.out.println(e);
    }
  }
}


分享到:
评论
1 楼 navy0168 2010-08-04  

package com;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;
/**
* 文件压缩与解压缩
* @author Administrator
*
*/
public class Zip {
static final int BUFFER = 2048;
public static void main(String[] args) {
Zip bean = new Zip();
try {
bean.zip("f:/test/respackage", "f:/test/flexStudy.zip");
// bean.unzip("f:/flexStudy.zip", "f:/test/");
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 解压缩 zipFilename 压缩文件 outputDirectory输出路径
* @param zipFilename
* @param outputDirectory
* @throws IOException
*/
public synchronized void unzip(String zipFilename, String outputDirectory)
throws IOException {
File outFile = new File(outputDirectory);
if (!outFile.exists()) {
outFile.mkdirs();
}
ZipFile zipFile = new ZipFile(zipFilename);
Enumeration<ZipEntry> en = (Enumeration<ZipEntry>) zipFile.entries();
ZipEntry zipEntry = null;
while (en.hasMoreElements()) {
zipEntry = (ZipEntry) en.nextElement();
if (zipEntry.isDirectory()) {
String dirName = zipEntry.getName();
dirName = dirName.substring(0, dirName.length() - 1);
File f = new File(outFile.getPath() + File.separator + dirName);
f.mkdirs();
} else {
File f = new File(outFile.getPath() + File.separator
+ zipEntry.getName());
f.createNewFile();
InputStream in = zipFile.getInputStream(zipEntry);
FileOutputStream out = new FileOutputStream(f);
try {
int c;
byte[] by = new byte[BUFFER];
while ((c = in.read(by)) != -1) {
out.write(by, 0, c);
}
} catch (IOException e) {
throw e;
} finally {
out.close();
in.close();
}
}
}
}
/**
*
* @param inputFile 压缩目录
* @param zipFilename 压缩路径名
* @throws IOException
*/
public synchronized void zip(File inputFile, String zipFilename) throws IOException {
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFilename));
try {
zip(inputFile, out, "");
} catch (IOException e) {
throw e;
} finally {
out.close();
}
}
private synchronized void zip(File inputFile, ZipOutputStream out, String base) throws IOException {
if (inputFile.isDirectory()) {
File[] inputFiles = inputFile.listFiles();
out.putNextEntry(new ZipEntry(base + "/"));
base = base.length() == 0 ? "" : base + "/";
for (int i = 0; i < inputFiles.length; i++) {
zip(inputFiles[i], out, base + inputFiles[i].getName());
}
} else {
if (base.length() > 0) {
out.putNextEntry(new ZipEntry(base));
} else {
out.putNextEntry(new ZipEntry(inputFile.getName()));
}
FileInputStream in = new FileInputStream(inputFile);
try {
int c;
byte[] by = new byte[BUFFER];
while ((c = in.read(by)) != -1) {
out.write(by, 0, c);
}
} catch (IOException e) {
throw e;
} finally {
in.close();
}
}
}
public synchronized void zip(String inputFilename, String zipFilename) throws IOException {
zip(new File(inputFilename), zipFilename);
}
}

相关推荐

    C++ 压缩解压缩库

    在给定的标题“C++ 压缩解压缩库”中,我们可以推断这是一个针对C++语言的库,专注于文件或数据的压缩与解压缩功能。描述提到这是为VS2012版本编译的,意味着它可能使用了Visual Studio 2012的编译环境,并且库已经...

    解压缩全能王二维码生成器exe文件+手机apk

    解压缩全能王是一款功能强大的压缩和解压缩工具,它支持多种格式,如ZIP、RAR、7Z等,并且具备加密和解密的功能,为用户提供了一站式的文件处理体验。在标题中提到的“二维码生成器exe文件”,这可能是指该软件内...

    文件压缩解压缩

    在IT行业中,文件压缩与解压缩是日常工作中常见的操作,特别是在数据传输、存储优化和软件分发等领域。这里我们主要探讨的是一个简单的工具类,它支持zip、rar、tar等多种格式的压缩和解压缩功能,并且经过实际测试...

    易语言7z解压缩源码.7z

    本文将深入探讨“易语言7z解压缩源码”这一主题,包括7z格式、解压缩原理以及易语言在实现解压缩过程中的关键知识点。 7z是一种高效的数据压缩格式,由7-Zip软件创建,它使用了多种压缩算法,如LZMA、PPMd等,以...

    C语言zip解压缩算法源代码

    本篇文章将深入探讨C语言实现的zip解压缩算法源代码,以及与之相关的技术知识点。 首先,我们要了解zip文件格式。Zip是一种广泛使用的文件压缩标准,它能够将多个文件打包成一个单一的压缩文件,便于存储和传输。在...

    php在线解压缩工具

    这样的工具对于网站管理员和开发者来说非常实用,因为它允许他们无需在本地环境中安装解压缩软件,就能直接在服务器上处理文件。然而,使用时需要注意安全问题,如防止恶意文件上传和执行,以及确保解压后的文件路径...

    Win解压缩彻底卸载干净

    在Windows操作系统中,有时我们需要卸载不再使用的软件,如WinZip等解压缩工具。然而,简单地通过控制面板或设置中的“卸载程序”功能往往无法完全移除这些软件,可能会留下右键菜单的快捷方式、注册表残留等问题。...

    哈夫曼编码压缩解压缩程序(CPP写的)

    《哈夫曼编码压缩解压缩程序的实现及原理》 哈夫曼编码是一种高效的数据压缩方法,它基于字符出现频率构建最优的二叉树结构,从而实现数据的压缩与解压缩。本文将深入探讨哈夫曼编码的原理,并通过一个使用C++编写...

    C++ zip解压缩压缩

    标题中的"C++ zip解压缩"指的是使用C++编程语言来处理ZIP文件格式,这是一种广泛使用的文件打包和压缩格式。ZIP文件可以将多个文件和目录组合到一个单一的档案文件中,并且可以进行压缩以节省存储空间。C++库提供了...

    C#两种解压缩方法,一种.net2.0自带类,第二种利用RAR解压缩

    在.NET框架中,C#提供了多种解压缩文件的方法。这里我们将深入探讨两种常见的技术:一种是使用.NET 2.0自带的`System.IO.Compression`命名空间中的`GZipStream`或`DeflateStream`,另一种是利用第三方库如...

    易语言源码易语言GZIP解压缩源码.rar

    在这个"易语言源码易语言GZIP解压缩源码.rar"压缩包中,包含了使用易语言实现GZIP文件解压缩的相关源代码,对于学习易语言以及理解文件压缩技术的开发者来说是一份宝贵的资源。 GZIP是一种广泛使用的数据压缩格式,...

    Linux 压缩解压缩

    本篇文章将深入探讨Linux中的压缩与解压缩技术,包括常用的命令、选项及其应用场景。 1. **gzip命令** - `gzip` 是Linux中最常用的压缩工具,它基于DEFLATE算法,可以有效地减小文件大小。 - 使用 `gzip 文件名` ...

    ucos移植zlib和zip文件解压缩

    本篇文章将详细介绍如何在UCOS系统中移植ZLIB库以及实现ZIP文件的解压缩。 首先,ZLIB是一个开源的压缩库,它提供了数据的无损压缩和解压缩功能,常用于GIF、PNG等文件格式。移植ZLIB到UCOS涉及到以下几个关键步骤...

    UE引擎解压缩zip格式文件插件

    "UE引擎解压缩zip格式文件插件"就是为了应对这种需求而设计的工具。 这个插件主要针对UE4和UE5引擎,允许开发者在游戏中直接解压ZIP格式的文件,而无需预先手动解压。这样可以极大地提高开发效率,特别是对于那些...

    java android zip解压缩(解决压缩中文乱码问题)

    然而,当压缩文件包含中文字符时,解压缩过程中可能会遇到乱码问题。这是因为编码格式不匹配或者处理方式不当导致的。本篇文章将深入探讨如何在Android平台上解决Java ZIP库在解压缩中文文件时出现的乱码问题。 ...

    zip压缩解压缩

    【标题】:“zip压缩解压缩”这一主题主要涵盖了在计算机编程中如何使用C++语言进行ZIP文件的压缩和解压缩操作。ZIP是一种广泛使用的文件格式,它允许将多个文件打包成一个单一的压缩文件,以节省存储空间和提高传输...

    linux下的压缩与解压缩

    ### Linux下的压缩与解压缩详解 #### 一、概述 在Linux系统中,压缩与解压缩功能对于数据管理和传输非常重要。对于初学者来说,掌握基本的压缩与解压缩技巧可以帮助他们更高效地管理文件和目录。本文将详细介绍...

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

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

    好用的解压缩软件

    标题中的“好用的解压缩软件”指的是那些能够高效、便捷地进行文件压缩与解压缩操作的计算机应用程序。这类软件通常具有用户友好的界面和多种压缩格式的支持,以满足不同用户的需求。 描述虽然简洁,但我们可以从中...

    DFT EDT 压缩解压缩模块详解

    《DFT EDT 压缩解压缩模块详解》 DFT(Design for Testability,可测试性设计)是集成电路设计中的关键部分,旨在提高产品的测试效率和质量。EDT(Embedded DFT Technology)是DFT的一种实现方式,它将测试功能嵌入...

Global site tag (gtag.js) - Google Analytics