[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
<span style="font-size:18px;">/**
* lsz
*/
public final class ZipUtil {
/**
* 解压zip文件
* @param unZipfile
* @param destFile
*/
public static void unZip(String unZipfile, String destFile) {
FileOutputStream fileOut;
File file;
InputStream inputStream;
byte[] buf = new byte[1024*4];
try {
//生成一个zip的文件
ZipFile zipFile = new ZipFile(unZipfile, "GBK");
//遍历zipFile中所有的实体,并把他们解压出来
for (@SuppressWarnings("unchecked")
Enumeration<ZipEntry> entries = zipFile.getEntries(); entries
.hasMoreElements();) {
ZipEntry entry = entries.nextElement();
//生成他们解压后的一个文件
file = new File(destFile+File.separator+entry.getName());
if (entry.isDirectory()) {
file.mkdirs();
} else {
// 如果指定文件的目录不存在,则创建之.
File parent = file.getParentFile();
if (!parent.exists()) {
parent.mkdirs();
}
//获取出该压缩实体的输入流
inputStream = zipFile.getInputStream(entry);
fileOut = new FileOutputStream(file);
int length = 0;
//将实体写到本地文件中去
while ((length = inputStream.read(buf)) > 0) {
fileOut.write(buf, 0, length);
}
fileOut.close();
inputStream.close();
}
}
zipFile.close();
//解压完后将原压缩文件删除
File zipfile = new File(unZipfile);
if(zipfile.exists()){
zipfile.delete();
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
/**
* 一个文件夹压缩
* 压缩文件夹
* @param filepath
* @param savepath
* @throws Exception
*/
public static void toZip(String filepath,String savepath) throws Exception{
File file = new File(filepath);
if(file.exists()){
//判断导出路径是否为空,如果为空,则将压缩包生成到当前路径下
if(StringUtils.isBlank(savepath)){
savepath = filepath+".zip";
}else{
savepath = savepath+".zip";
}
ZipOutputStream outPut = new ZipOutputStream(new FileOutputStream(new File(savepath)));
outPut.setEncoding("GBK");//设置编码
createZip(outPut,file.listFiles(),null);
outPut.flush();
outPut.close();
}else{
//not found
throw new RuntimeException("Err :not found file exception:"+filepath);
}
}
private static void createZip(org.apache.tools.zip.ZipOutputStream outPut,File[] listFiles,String fuPath) throws Exception {
for(File f : listFiles){
String name = fuPath==null?f.getName():fuPath+"/"+f.getName();;
if(f.isDirectory()){
outPut.putNextEntry(new ZipEntry(name+"/"));
createZip(outPut,f.listFiles(),name);
}else{
outPut.putNextEntry(new ZipEntry(name));
InputStream is = new FileInputStream(f);
byte[] bys = new byte[1024];
int len = 0;
while((len = is.read(bys))!=-1)
outPut.write(bys, 0, len);
is.close();
outPut.flush();
}
}
}
/*
* 复制文件 只能使复制文件,不能复制文件夹
*/
public static void fileChannelCopy(File fromfile, File tofile) {
FileInputStream fi = null;
FileOutputStream fo = null;
FileChannel in = null;
FileChannel out = null;
try {
fi = new FileInputStream(fromfile);
fo = new FileOutputStream(tofile);
in = fi.getChannel();//得到对应的文件通道
out = fo.getChannel();//得到对应的文件通道
in.transferTo(0, in.size(), out);//连接两个通道,并且从in通道读取,然后写入out通道
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fi.close();
in.close();
fo.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}</span>
分享到:
相关推荐
实现zip文件的压缩,我们通常会遍历要压缩的目录,递归地将每个文件添加到`zip`档案中。这需要使用`minizip`的`zipOpen`、`zipOpenNewFileInZip`、`zipWriteInFileInZip`和`zipCloseFileInZip`等函数。同时,对于每...
总结来说,`zip文件压缩解压源码(C++)`涉及的关键技术包括:理解zip文件格式,使用C++进行文件操作,选择和应用压缩算法,以及错误处理。通过分析和理解`XUnzip.cpp`和`XZip.cpp`,我们可以学习如何在C++环境中...
为了使用这个C++库,开发者首先需要在他们的源文件中包含zip.h和unzip.h头文件,然后调用相应的函数进行压缩或解压缩操作。例如,可能有一个`compress_file()`函数用于压缩单个文件,以及一个`unzip_archive()`函数...
- **解压缩文件**:使用`unzip()`方法可以解压缩整个Zip文件,或者通过`extractFile()`或`extractFolder()`方法提取指定的文件或目录。 - **加密**:`zip4j`支持AES 128/256位加密,你可以设置密码保护Zip文件,...
总之,C语言实现ZIP压缩解压涉及文件操作、数据压缩算法和ZIP文件格式的理解。通过学习和应用相关库,开发者可以创建自己的ZIP工具,满足特定的需求。这个过程既锻炼了C语言编程技能,也加深了对文件压缩技术的理解...
在日常工作中,我们经常会遇到需要对文件进行压缩或解压缩的情况。对于批量处理任务,使用脚本语言可以大大提高效率。Visual Basic Script(VBS)作为Windows环境中的一种常用脚本语言,支持多种文件操作功能,包括...
如果你需要压缩或解压缩多个文件,可以将文件路径的数组传递给`createZipFileAtPath:withFilesAtPaths:`或`unZipFileAtPath:toDestination:`方法。 ### 6. 错误处理 在实际应用中,你需要处理可能出现的错误,例如...
ZIP是一种流行的文件归档格式,可以包含多个压缩或未压缩的文件。为了在UCOS上实现ZIP解压,我们可以利用开源库,例如ZIP解压缩工具“unzip”。文件unzip101h可能是包含UNZIP库源代码的一个头文件。 1. 移植UNZIP库...
在VC++ MFC环境下,开发过程中我们可能会遇到需要对文件进行压缩或解压缩的需求。CZip和CUnzip是两个非常实用的类,它们分别用于文件的压缩和解压缩操作,是ZLib库的一个MFC封装,使得在MFC项目中使用起来更加方便。...
VB6.0调用 DLL版ZIP压缩文件夹目录和解压ZIP文件,网上很多源码不好用,所以就自己做了一个。原始代码是VC++的用VS2019编译了一个,DLL封装了下。调用很简单 '调用方法如下: 'CreateZipFileA "C:\123", "C:\123.zip...
5从压缩文件解压文件 6释放(关闭)压缩文件 源码包含了封装的功能模块类以及测试类, 全部源码都可以用VS2020编译通过,请放心使用! 友情提示,为了兼顾一些旧代码,预编译头文件用的是StdAfx.h,如果需要更换为...
本文将深入探讨如何使用Java来处理ZIP文件,特别是针对标题所提及的“java 中 zip压缩文件解压工具类”。我们将讨论核心的Java API,如`java.util.zip`包中的类,并通过一个名为`CompressFileUtils`的工具类来展示...
要压缩文件或目录到ZIP文件,你需要创建一个`ZipOutputStream`实例,并将其包装在`FileOutputStream`上,指向你想要创建的ZIP文件。然后,你可以使用`ZipEntry`类来表示每一个要添加到ZIP文件的条目,通过调用`...
本文将详细介绍如何使用C++对ZIP文件进行压缩和解压缩操作,同时提供一个基于ZipLib库的封装示例。ZipLib是一个开源库,专为C++设计,用于处理ZIP文件格式。 首先,我们要理解ZIP文件格式。ZIP是一种通用的文件压缩...
2. **ZIP文件格式**:ZIP是一种流行的档案格式,可以包含一个或多个经过压缩的文件和目录。ZIP文件头包含了关于压缩方法、时间戳、文件权限等信息,minizip就是用来解析和操作这些信息的。 3. **minizip API**:...
总的来说,C++实现ZIP文件解压涉及对ZIP文件格式的深入了解,包括其结构、压缩方法和元数据。这个过程需要对文件I/O、内存管理和错误处理有扎实的理解。尽管本文提供了基本的思路,但在实际应用中,可能需要进一步的...
unzip.php可能包含了处理ZIP文件解压的逻辑,包括读取ZIP文件、检查密码、解压缩文件到服务器指定位置等步骤。而zip.php则可能负责文件的压缩操作,它需要遍历要打包的文件和目录,创建新的ZIP文件,并将文件添加到...
ZIP文件通常包含一个或多个压缩或未压缩的数据块,每个块对应原始文件的一个部分。ZIP格式支持多种压缩算法,如DEFLATE,这是最常见的一种。 开源的C++ ZIP压缩库,通常会提供一套API(应用程序编程接口),开发者...
在.NET框架中,VB.NET提供了一种方便的方式来处理ZIP文件的压缩和解压缩,这主要得益于System.IO.Packaging命名空间中的ZipPackage类。本文将深入探讨如何利用VB.NET和ZipPackage来完成这一任务,同时也会提及一些...
1. 可以将任意一个目录压缩成一个zip文件,包含密码 2. 可以将任意一个zip文件,加压到一个目录中,该目录位于当前执行文件所在目录的Unzip目录中,目录结构不变 3. 可以加压出任意一个zip文件中的文件到当前执行...