package com.yonge.zip;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
import org.apache.commons.io.IOUtils;
/**
* 压缩目标文件为zip文件
* @author wb-gaoy
* @version $Id: CompressByZip.java,v 0.1 2013-1-8 上午10:18:16 wb-gaoy Exp $
*/
public class ZipUtil {
public static void zip(File srcFile, File targetFile) throws IOException {
ZipOutputStream zipOutputStream = null;
FileOutputStream fileOutputStream = null;
try {
fileOutputStream = new FileOutputStream(targetFile);
zipOutputStream = new ZipOutputStream(fileOutputStream);
zip(zipOutputStream, srcFile, "");
} finally {
if (zipOutputStream != null) {
zipOutputStream.close();
}
if (fileOutputStream != null) {
fileOutputStream.close();
}
}
}
public static void zip(ZipOutputStream zipOutputStream, File srcFile, String baseURL)
throws IOException {
baseURL = baseURL == null || baseURL.length() == 0 ? srcFile.getName() : baseURL
+ "/"
+ srcFile
.getName();
if (srcFile.isDirectory()) {
File[] files = srcFile.listFiles();
if (files != null && files.length > 0) {
for (File f : files) {
zip(zipOutputStream, f, baseURL);
}
} else {
zipOutputStream.putNextEntry(new ZipEntry(baseURL + "/"));
}
} else {
zipOutputStream.putNextEntry(new ZipEntry(baseURL));
FileInputStream fileInputStream = null;
try {
//读数据
fileInputStream = new FileInputStream(srcFile);
byte[] bytes = new byte[1024];
int length = -1;
while ((length = fileInputStream.read(bytes)) != -1) {
zipOutputStream.write(bytes, 0, length);
}
} finally {
if (fileInputStream != null) {
fileInputStream.close();
}
}
}
}
public static void unzip(File srcFile, File targetFile) throws IOException {
FileInputStream fileInputStream = null;
ZipInputStream zipInputStream = null;
FileOutputStream fileOutputStream = null;
try {
fileInputStream = new FileInputStream(srcFile);
zipInputStream = new ZipInputStream(fileInputStream);
if (!targetFile.exists()) {
targetFile.mkdirs();
}
ZipEntry entry = zipInputStream.getNextEntry();
File tempFile;
while (entry != null) {
tempFile = new File(targetFile, entry.getName());
if (entry.isDirectory()) {
tempFile.mkdir();
} else {
tempFile.getParentFile().mkdirs();
fileOutputStream = new FileOutputStream(tempFile);
IOUtils.copy(zipInputStream, fileOutputStream);
}
entry = zipInputStream.getNextEntry();
}
} finally {
if (zipInputStream != null) {
zipInputStream.close();
}
if (fileInputStream != null) {
fileInputStream.close();
}
if (fileOutputStream != null) {
fileOutputStream.close();
}
}
}
public static void main(String[] args) {
File file = new File("C:\\ecmng\\site\\tmp\\test");
try {
//zip(file, new File("demo.zip"));
unzip(new File("demo.zip"), file);
} catch (IOException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
C++利用Zlib库实现zip文件压缩及解压 支持递归压缩.可配合自动更新功能实现zip压缩包进得软件更新
利用zip开源代码压缩解压,主要是调用zip的函数
C#利用SharpZipLib进行文件压缩和解压实例
用Java压缩解压ZIP文件,将利用java.util.zip 包中提供的类来实现压缩和解压zip 格式文件的功能。当然,本例在功能上完全没有Winzip 等成熟的压缩软件那么强,也不能做的很强,本例仅仅是演示如何来使用java.util....
利用7Zip实现在线压缩与解压,本程序可以独立运行于没有安装7zip压缩软件的服务器上,可以选择多种压缩格式,如7z、gzip、zip等等格式,可以在线压缩文件夹和文件,具体命令行参数可查询相关资料
通过设计,允许创建ZIP压缩文件,并对ZIP压缩文件中包含的文件进行显示、添加、解压、删除等操作。GUI界面与下图类似: 【实验目的】 要求学生能熟练使用基于Swing的GUI设计,熟练使用常用组件和容器,理解java事件...
在linux环境下通过zlib库压缩文件夹/目录成.zip文件的c++程序。测试ok、不乱码,如果想自己操作一边,请看我写的readme文档(包含说明和操作步骤),可以快速实现压缩。
利用java.util.zip 包中提供的类来实现压缩和解压zip 格式文件的功能.rar
网上的办法大多是——先解压,然后对解压目录替换文件,最后再重新压缩。该办法需要比较繁琐,且需要一个临时目录。 于是想找无需解压的方案。 后来找到利用 ZipInputStream、ZipOutputStream 实现该功能的办法。
对于 ZIP 及 GZIP 格式,7-Zip 能提供比使用 PKZip 及 WinZip 高 2-10% 的压缩比! 提供更完善的 AES-256 加密算法;可以利用7-zip内置命令创建体积小巧的自动释放安装包! 与Windows 资源管理器紧密集成;强大...
关于Java实现文件的zip的解压缩 文本文档 虽然不多
利用ant.jar解压缩zip包的工具类,内含ant.jar包,可以解决文件为中文的问题,大家随便看看
通过学习可以理解压缩和解压缩的目的,并能使用Python的zipfile模块熟练进行ZIP解压缩操作,包括整体解压和逐个解压文件,为后续处理zip文件打下坚实基础。 阅读建议: 建议首先了解压缩和解压缩的基本概念,然后结合...
文件压缩解压加密是一款文件解压缩加密工具,用户可以利用这款软件对文件的解压和压缩进行加密,需要的朋友快来下载使用吧。 软件功能介绍 文件压缩解压加密(UnZipLite File Manager)是一个方便和可靠的应用程序压,...
利用ASP.NET 实现文件的的压缩和解压文件 附属代码
由于并不清楚服务器具体地址,只有jupyter ...### 利用zipfile模块来压缩和解压文件 先将想要上传的多个文件压缩为.zip格式,在jupyter notebook中上传压缩后的文件后再用python 的zipfile函数模块压缩就可以了
java做的压缩解压文件,利用apache中提供的ZIP工具类,文件名称最好不是中文的。
主要给大家介绍了利用Android实现下载zip压缩文件并解压的方法,文中给出了示例代码并提供了源码下载,需要的朋友可以参考借鉴,下面来一起看看吧。
使用java基础类写的一个简单的zip压缩解压工具类,实现了指定目录压缩到和该目录同名的zip文件和将zip文件解压到指定的目录的功能