package test;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;
import org.apache.log4j.Logger;
/**
* 功能描述:ZIP压缩与解压工具类
*/
public class ZipUtil {
private static final Logger log = Logger.getLogger(ZipUtil.class);
/**
* 方法用途和描述: 解压ZIP文件
*
* @param zipFilePath
* 要解压的ZIP文件路径
* @param unZipDir
* 要解压到目标文件夹路径
*/
@SuppressWarnings("unchecked")
public static boolean unZip(String zipFilePath, String unZipDir) {
ZipFile zfile = null;
OutputStream os = null;
InputStream is = null;
try {
zfile = new ZipFile(zipFilePath);
log.debug(zfile.getName());
Enumeration zList = zfile.entries();
ZipEntry ze = null;
byte[] buf = new byte[1024];
String path = null;
while (zList.hasMoreElements()) {
// 从ZipFile中得到一个ZipEntry
ze = (ZipEntry) zList.nextElement();
if (ze.isDirectory()) {
log.debug("Dir: " + ze.getName() + " skipped..");
continue;
}
log.debug("Extracting: " + ze.getName() + "\t" + ze.getSize()
+ "\t" + ze.getCompressedSize());
// 以ZipEntry为参数得到一个InputStream,并写到OutputStream中
path = unZipDir.concat("/").concat(ze.getName());
FileUtil.checkFileDirectoryExists(path);
os = new BufferedOutputStream(new FileOutputStream(path));
is = new BufferedInputStream(zfile.getInputStream(ze));
int readLen = 0;
while ((readLen = is.read(buf, 0, 1024)) != -1) {
os.write(buf, 0, readLen);
}
os.flush();
log.debug("Extracted: " + ze.getName());
ze = null;
}
zList = null;
} catch (FileNotFoundException e) {
e.printStackTrace();
return false;
} catch (IOException e) {
e.printStackTrace();
return false;
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (zfile != null) {
try {
zfile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return true;
}
/**
*
* 方法用途和描述: 压缩文件
* @param sourceFilePath 需要压缩的文件路径
* @param targetFilePath 压缩后放置的文件路径,带.zip
* @param bufferSize 缓冲长度
*/
public static void zip(String sourceFilePath,String targetFilePath,int bufferSize){
FileOutputStream dest = null;
ZipOutputStream out = null;
try {
BufferedInputStream origin = null;
dest = new FileOutputStream(targetFilePath);
out = new ZipOutputStream(new BufferedOutputStream(
dest));
byte data[] = new byte[bufferSize];
File f = new File(sourceFilePath);
File files[] = f.listFiles();
for (int i = 0; i < files.length; i++) {
FileInputStream fi = new FileInputStream(files[i]);
origin = new BufferedInputStream(fi, bufferSize);
ZipEntry entry = new ZipEntry(files[i].getName());
out.putNextEntry(entry);
int count;
while ((count = origin.read(data, 0, bufferSize)) != -1) {
out.write(data, 0, count);
}
origin.close();
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (dest != null) {
try {
dest.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String argv[]) {
zip("E:\\htmltext\\text","E:\\myfiles.zip",2048);
}
}
分享到:
相关推荐
在Java编程环境中,处理文件压缩和解压缩是常见的任务,特别是在构建可执行的JAR包或者处理数据传输时。本文将深入探讨如何使用Java来处理ZIP文件,特别是针对标题所提及的“java 中 zip压缩文件解压工具类”。我们...
本篇将详细介绍如何使用“安卓备份文件ab文件解压工具”以及与其相关的知识点。 首先,`ab`文件是一种加密和压缩的数据格式,由Android的`adb backup`命令创建。这种文件包含了设备上应用程序的数据,包括应用设置...
此外,虽然“用友ba_文件解压工具”提供了解压缩的功能,但并非所有的ba_文件都能被成功解压,这可能与文件的版本兼容性、备份时的参数设置等因素有关。因此,在实际操作中,遇到问题时可能需要联系用友官方的技术...
标题“文件解压工具免费”和描述“文件解压工具免费”主要关注的是在信息技术领域中,用户可以免费使用的文件解压缩软件。这类工具对于日常的数字生活和工作至关重要,因为许多文件,尤其是从互联网下载的,常以压缩...
标题中的“EXE可执行文件解压工具”指的是专门用于提取EXE文件内容的软件工具。在计算机领域,EXE文件是Windows操作系统中常见的可执行程序格式,它们包含了运行一个程序所需的所有代码和数据。然而,不是所有的EXE...
《PakMan:深入解析荣誉骑士游戏PAK文件的解压工具》 在电子游戏领域,数据打包技术被广泛应用于游戏资源的管理与分发,以优化存储和加载效率。"荣誉骑士"作为一款深受玩家喜爱的游戏,其内部资源文件通常以PAK格式...
mpq.workshop解压工具,暴雪公司mpq文件解压工具,可以打开mpq文件,解压出mpq文件中的wav,mp3,mdx(模型文件),等等,从魔兽,星际的mpq文件中提取音乐,人物模型等等,喜欢的朋友可以下来用用
安卓IMG刷机包文件解压工具,主要是解压img格式 功能: 本工具可以打开安卓IMG格式的刷机文件,从中提取想要的资源,也可以直接全部导出到指定位置,或者整理后另存。 可以识别2048+64格式的YAFF2 文件系统IMG能够...
本篇文章将深入探讨img镜像文件、解压工具以及与之相关的安卓系统修改和华为设备的应用。 首先,我们要理解什么是img文件。img文件是一种二进制文件,它通常用于存储磁盘或分区的精确副本。在安卓系统中,img文件...
直接解压unitypackage文件, 无需安装unity工具, 运行需要python环境, 来自 github.com/gered/extractunitypackage, 用法: extractunitypackage.py input_file [output_path]
Zlib压缩解压工具是一款基于Zlib库的实用程序,用于对数据进行高效压缩和解压缩。Zlib是由Jean-loup Gailly和Mark Adler开发的开源库,它广泛应用于各种软件开发,尤其是在网络传输和文件存储方面。该工具特别适合...
文件解压工具是一种非常实用的软件,主要用于处理各种类型的压缩文件。在日常工作中,我们经常遇到需要传输或存储大量数据的情况,为了节省空间和提高效率,人们通常会选择将这些文件打包成一个压缩文件,例如ZIP、...
标题中的“PPC手机CAB文件解压工具”指的是针对Pocket PC(PPC)设备的CAB格式安装包的解压缩软件。CAB文件是微软为Windows CE和Pocket PC操作系统设计的一种压缩格式,通常用于存储应用程序、系统更新或组件。 在...
用于华为手机助手备份的微信、QQ等等聊天记录备份解压。
本文将详细介绍如何在Linux环境下使用`xz`文件解压工具进行文件的解压缩。 首先,`xz`压缩格式基于LZMA2压缩算法,这是对早期LZMA算法的改进版本,提供了更好的压缩效果。然而,由于其压缩过程涉及复杂的计算,因此...
总之,`ZipUtil`文件压缩工具类通过结合`ZipEntry`和`ZipOutputStream`,提供了一种高效且健壮的解决方案,尤其适合处理包含中文字符的文件和目录,确保在压缩和解压过程中不会出现乱码问题。这对于需要在Java应用...
UPX(Ultimate Packer for eXecutables)是一款著名的开源文件压缩工具,主要用于压缩PE(Portable Executable)格式的文件,如Windows操作系统中的EXE可执行文件和DLL动态链接库。它能够显著减小文件大小,提高程序...
除了解压功能,UENI解压工具还可能具备压缩功能,允许用户将修改过后的数据重新打包成UENI文件。这样的双向操作,使得工具的实用性大大提升,同时也满足了不同用户的需求。 在提供的压缩包文件中,包含了一份名为...
《HomeWorld2 Big文件解压工具详解及MOD制作指南》 在电脑游戏领域,特别是针对策略游戏《HomeWorld2》的玩家和MOD制作者来说,掌握如何处理"Big"文件是一项至关重要的技能。"Big"文件是《HomeWorld2》等游戏用来...
当你拥有一个名为"安卓备份文件ab文件解压工具.zip"的压缩包时,里面很可能包含了一款专门用于处理AB备份文件的解压工具,方便用户恢复数据或对备份内容进行查看。 首先,我们需要理解AB文件的结构。AB备份文件分为...