java 解压缩zip 压缩zip

1、解压缩

package zuo.file.zip.unzip;

import java.io.BufferedInputStream;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.util.zip.ZipEntry;

import java.util.zip.ZipFile;

import java.util.zip.ZipInputStream;

import org.apache.commons.io.FileUtils;

import org.apache.commons.lang3.StringUtils;

/**

* @author

*

*/

public class ReadZipFile {

public static void main(String[] args) throws Exception {

try {

readZipFile("D:\\ztree.zip");

} catch (Exception e) {

e.printStackTrace();

}

}

public static void readZipFile(String file) throws Exception {

ZipFile zf = new ZipFile(file);

InputStream in = new BufferedInputStream(new FileInputStream(file));

ZipInputStream zin = new ZipInputStream(in);

ZipEntry ze;

while ((ze = zin.getNextEntry()) != null) {

if (ze.isDirectory()) {

System.out.println("文件夹路径:---"+ze.getName());

} else {

System.out.println("文件路径:---"+ze.getName());

String fileName = ze.getName().substring(ze.getName().lastIndexOf("/")+1);

System.out.println("文件名称:---"+fileName);

//有数据

if (ze.getSize() > 0) {

//现在d:盘根目录下新建一个test的空文件夹,将zip数据写进去

FileUtils.copyInputStreamToFile(zf.getInputStream(ze), new File("d:\\test/"+picName));

}

}

}

zin.closeEntry();

}

}

2、压缩

package zuo.file.zip.zipandunzip;

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 org.apache.tools.zip.ZipEntry;

import org.apache.tools.zip.ZipFile;

import org.apache.tools.zip.ZipOutputStream;

/**

* @source http://my.oschina.net/woqi/blog/11134

* @author

*

*/

public class ZipUtil {

/**

* 压缩

* @param src

*            源文件或者目录

* @param dest

*            压缩文件路径

* @throws IOException

*/

public static void zip(String src, String dest) throws IOException {

ZipOutputStream out = null;

try {

File outFile = new File(dest);

out = new ZipOutputStream(outFile);

File fileOrDirectory = new File(src);

if (fileOrDirectory.isFile()) {

zipFileOrDirectory(out, fileOrDirectory, "");

} else {

File[] entries = fileOrDirectory.listFiles();

for (int i = 0; i < entries.length; i++) {

zipFileOrDirectory(out, entries[i], "");

}

}

} catch (IOException ex) {

ex.printStackTrace();

} finally {

if (out != null) {

try {

out.close();

} catch (IOException ex) {

}

}

}

}

/**

* 递归压缩文件或目录

*

* @param out

*            压缩输出流对象

* @param fileOrDirectory

*            要压缩的文件或目录对象

* @param curPath

*            当前压缩条目的路径,用于指定条目名称的前缀

* @throws IOException

*/

private static void zipFileOrDirectory(ZipOutputStream out, File fileOrDirectory, String curPath) throws IOException {

FileInputStream in = null;

try {

if (!fileOrDirectory.isDirectory()) {

// 压缩文件

byte[] buffer = new byte[4096];

int bytes_read;

in = new FileInputStream(fileOrDirectory);

ZipEntry entry = new ZipEntry(curPath + fileOrDirectory.getName());

out.putNextEntry(entry);

while ((bytes_read = in.read(buffer)) != -1) {

out.write(buffer, 0, bytes_read);

}

out.closeEntry();

} else {

// 压缩目录

File[] entries = fileOrDirectory.listFiles();

for (int i = 0; i < entries.length; i++) {

// 递归压缩,更新curPaths

zipFileOrDirectory(out, entries[i], curPath + fileOrDirectory.getName() + "/");

}

}

} catch (IOException ex) {

ex.printStackTrace();

throw ex;

} finally {

if (in != null) {

try {

in.close();

} catch (IOException ex) {

}

}

}

}

public static void main(String[] args) {

try {

ZipUtil.zip("F:\\temp", "F:\\test.zip");

} catch (Exception e) {

e.printStackTrace();

}

}

}

时间: 2024-10-16 12:09:22

java 解压缩zip 压缩zip的相关文章

Android之Gzip/Zip压缩

前言: 做过Android网络开发的都知道,在网络传输中我们一般都会开启GZIP压缩,但是出于刨根问底的天性仅仅知道如何开启就不能满足俺的好奇心的,所以想着写个demo测试一下比较常用的两个数据压缩方式,GZIP/ZIP压缩. 首先认识一下GZIP压缩 GZIP是网站压缩加速的一种技术,对于开启后可以加快我们网站的打开速度,原理是经过服务器压缩,客户端浏览器快速解压的原理,可以大大减少了网站的流量.GZIP最早由Jean-loup Gailly和Mark Adler创建,用于UNIX系统的文件压

vbs实现zip压缩

VBS实现zip压缩 Zip "D:\test.xls", "D:\test.zip" Sub Zip(ByVal mySourceDir, ByVal myZipFile) Set fso = CreateObject("Scripting.FileSystemObject") If fso.GetExtensionName(myZipFile) <> "zip" Then Exit Sub ElseIf fso

Java.util.zip 压缩与解压缩工具类

Java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类. 还包括使用 DEFLATE 压缩算法(用于 ZIP 和 GZIP 文件格式)对数据进行压缩和解压缩的类. 依赖 Jdk 编写该工具类,不依赖任何第三方 jar,随用随取,实现功能大体如下: 1.目录级别递归压缩与解压缩 zip: 2.单文件压缩和解压缩 zip : import java.io.*; import java.util.zip.ZipEntry; import java.util.zip.ZipIn

Java解压缩技术(一)ZIP压缩-解压缩

Java解压缩技术的实现 GZIP ZIP BZIP2系列实现 没啥好说的,都是些文件操作,直接贴代码 package com.ljh.zip; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import j

java基础----&gt;Zip压缩的使用(转)

java中提供了对压缩格式的数据流的读写.它们封装到现成的IO 类中,以提供压缩功能.下面我们开始java中压缩文件的使用. 目录导航: 关于压缩的简要说明 GZIP压缩文件的使用 ZIP压缩文件的使用 GZIP与ZIP压缩的比较 友情链接 关于压缩的简要说明 一. Java中有着压缩的类: CheckedInputStream GetCheckSum()为任何InputStream 产生校验和(不仅是解压) CheckedOutputStream GetCheckSum()为任何OutputS

Java实现文件压缩与解压[zip格式,gzip格式]

Java实现ZIP的解压与压缩功能基本都是使用了Java的多肽和递归技术,可以对单个文件和任意级联文件夹进行压缩和解压,对于一些初学者来说是个很不错的实例. zip扮演着归档和压缩两个角色:gzip并不将文件归档,仅只是对单个文件进行压缩,所以,在UNIX平台上,命令tar通常用来创建一个档案文件,然后命令gzip来将档案文件压缩. Java I/O类库还收录了一些能读写压缩格式流的类.要想提供压缩功能,只要把它们包在已有的I/O类的外面就行了.这些类不是Reader和Writer,而是Inpu

Java压缩技术(二) ZIP压缩——Java原生实现

原文:http://snowolf.iteye.com/blog/642298 去年整理了一篇ZLib算法Java实现(Java压缩技术(一) ZLib),一直惦记却没时间补充.今天得空,整理一下ZIP的java原生实现. 看了几篇zip压缩算法的帖子,讲的算是比较细致了,但就是没有对应的解压缩实现,太惜败了! 我就喜欢没事做总结,稍作整理,将其收纳! 相关链接: Java压缩技术(一) ZLib Java压缩技术(二) ZIP压缩——Java原生实现 Java压缩技术(三) ZIP解压缩——J

Linux下的压缩zip,解压缩unzip命令详解及实例

Linux下的压缩zip,解压缩unzip命令 本人亲自测试总结: linux 安装unzip zip 安装命令:yum install -y unzip zip # unzip yasuo.zip 方法一: 安装命令:yum install -y unzip zip 1. 我想把一个文件abc.txt和一个目录dir1压缩成为yasuo.zip:# zip -r yasuo.zip abc.txt dir12.我下载了一个yasuo.zip文件,想解压缩: # unzip yasuo.zip

java压缩和解压缩Zip、Jar、Gzip文件

我们经常会使用WinZIP等压缩软件将文件进行压缩以方便传输.在java里面也提供了将文件进行压缩以减少传输时的数据量的类,可以很方便的将文件压缩成ZIP.JAR.GZIP等形式,GZIP主要是在Linux系统下的压缩文件. 下面主要讲的就是ZIP形式的压缩文件,而JAR.GZIP形式的压缩文件也是类似的用法. ZIP是一种很常见的压缩形式,在java中要实现ZIP的压缩主要用到的是java.util.zip这个包里面的类.主要有ZipFile. ZipOutputStream.ZipInput