最近看到一个有关用java压缩的例子,自己想总结一下,这个方法可以把一个压缩文件解压,列入文件名称为test.zip,不管test.zip里面有多少文件和文件夹都可以加压出来,也可以把解压后的文件压缩成test.zip代码如下:
package bean;
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.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
import javax.swing.text.html.parser.Entity;
public class FileCompressAndUnCompress {
public static boolean fileUnCompress(String inputFilePath, String outputDirectory){
boolean flag = true; // 标示是不是在文件加压的时候出现问题
ZipInputStream zis = null; // zip输入流
ZipFile zfile = null; // 压缩文件
try {
zfile = new ZipFile(new File(inputFilePath));
zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(inputFilePath)));
} catch (FileNotFoundException e) {
flag = false;
e.printStackTrace();
} catch (ZipException e) {
flag = false;
e.printStackTrace();
} catch (IOException e) {
flag = false;
e.printStackTrace();
}
ZipEntry zipEntry = null;
// 遍历zip文件的子文件
try {
while((zipEntry = zis.getNextEntry()) != null){
// 判断从zip流中读出的是否为文件夹
if(zipEntry.isDirectory()){
String directorName = zipEntry.getName();
File director = new File(outputDirectory + directorName);
director.mkdir();
}else{
File file = new File(outputDirectory + File.separator + zipEntry.getName());
// 新建文件
file.createNewFile();
// 得到文件的输入流
InputStream is = zfile.getInputStream(zipEntry);
// 文件的输出流
FileOutputStream fos = new FileOutputStream(file);
// 设置写文件的缓存
byte [] byteBuffer=new byte[1024*8];
int i = -1;
while((i = is.read(byteBuffer)) != -1){
fos.write(byteBuffer,0,i);
}
is.close();
fos.close();
}
}
} catch (IOException e) {
flag = false;
e.printStackTrace();
}
return flag;
}
public static boolean fileCompress(File file,String basePath,ZipOutputStream zos){
boolean flag = true; // 判断是否压缩成功
// 判断文件是否为文件夹若使就放入到zip流中然后递归,不是就直接放入zip流中
if(file.isDirectory()){
// 遍历目录下的所有文件
File [] files = file.listFiles();
for(File f:files){
try {
zos.putNextEntry(new ZipEntry(basePath + File.separator));
} catch (IOException e) {
flag = false;
e.printStackTrace();
}
basePath = basePath.length() == 0 ? "" : basePath + "/";
// 递归操作
fileCompress(f,basePath + f.getName(), zos);
}
}else{
try {
if(basePath.length()>0){
zos.putNextEntry(new ZipEntry(basePath));
}else{
zos.putNextEntry(new ZipEntry(basePath+ file.getName()));
}
FileInputStream fis = new FileInputStream(file);
// 设置写文件的缓存
byte [] byteBuffer=new byte[1024*8];
int i = -1;
while((i = fis.read(byteBuffer)) != -1){
zos.write(byteBuffer,0,i);
}
zos.closeEntry();
fis.close();
} catch (IOException e) {
flag = false;
e.printStackTrace();
}
}
return flag;
}
public static void main(String[] args) throws Exception {
ZipOutputStream zos =new ZipOutputStream(new FileOutputStream("D:\\test\\unzipApk\\temp.zip"));
File zipFile = new File("D:\\test\\unzipApk\\temp.zip");
zipFile.getParentFile().mkdirs();
//fileUnCompress("D:\\test\\unzipApk\\temp.zip", "D:\\test\\unzipApk\\");
File file = new File("D:\\test\\unzipApk\\temp");
fileCompress(file,"temp",zos);
zos.close();
}
}
分享到:
相关推荐
JAVA压缩解压JAVA压缩解压JAVA压缩解压JAVA压缩解压JAVA压缩解压
java压缩解压文件
在给定的项目中,"JAVA 压缩解压AES"涉及到了Java的文件压缩和解压缩技术,以及AES加密解密的实现。通过`java.util.zip`库或Apache Commons Compress库可以实现文件夹的压缩和解压缩,而AES加密则可以通过Java ...
java压缩解压ZIP
这篇博客文章“Java压缩解压ZIP之Zip4j”可能详细介绍了如何使用Zip4j进行文件的压缩和解压缩操作。 首先,我们需要了解Zip4j库的核心概念。Zip4j提供了一个名为`ZipFile`的类,它代表一个ZIP文件,包含了所有与ZIP...
这篇博客文章《Java压缩解压文件》可能会详细讲解如何使用Java API来处理ZIP文件格式。 在Java中,我们可以利用内置的`java.util.zip`包来处理压缩和解压操作。`ZipOutputStream`和`ZipInputStream`是这个包中的...
用Java压缩解压ZIP文件,将利用java.util.zip 包中提供的类来实现压缩和解压zip 格式文件的功能。当然,本例在功能上完全没有Winzip 等成熟的压缩软件那么强,也不能做的很强,本例仅仅是演示如何来使用java.util....
总的来说,这个Java压缩解压RSA加密程序源代码结合了数据压缩和非对称加密两大技术,提供了一种在传输或存储数据时兼顾效率和安全性的解决方案。理解并掌握这些概念对于任何从事Java开发,尤其是涉及网络安全和数据...
在Java编程环境中,我们可以利用LZW算法实现文件的压缩和解压缩功能。以下是对LZW算法及其Java实现的详细解释: 1. **LZW算法原理**: LZW算法基于词典编码思想,它通过查找或构建一个动态更新的词典来压缩数据。...
java写的压缩解压缩工具 可以压缩文件文件夹,可以直接运行
在安卓平台上,使用Java语言处理文件的压缩与解压是一项常见的任务,这涉及到对文件系统的操作以及对ZIP格式的理解。本文将深入探讨如何在Android环境中使用Java实现这一功能。 首先,我们要了解ZIP文件格式。ZIP是...
NULL 博文链接:https://zhenyong.iteye.com/blog/1576148
Java是一种广泛使用的编程语言,其在处理文件压缩和解压缩方面提供了强大的支持。在Java中,我们可以使用内置的`java.util.zip`包来实现对文件和目录的压缩与解压缩功能。这个包包含了多个类,如`ZipOutputStream`...
Java压缩及解压tar、tar.z格式文件, 需要apache的包ant-1.7.1.jar 这个自己去搜索下下载
本文将详细讲解如何使用Java来解压和压缩tar包,同时解决在处理中文文件名时可能出现的乱码问题,主要关注`javatar-2.5.jar`库中的功能以及`TarUtil.java`类的应用。 首先,`javatar-2.5.jar`是一个专门用于处理tar...
本文将深入探讨如何使用Java来处理ZIP文件,特别是针对标题所提及的“java 中 zip压缩文件解压工具类”。我们将讨论核心的Java API,如`java.util.zip`包中的类,并通过一个名为`CompressFileUtils`的工具类来展示...
GZ是一种常用的文件压缩格式,它利用了gzip程序进行压缩,而在Java中,我们可以使用`java.util.zip`包中的类来实现对GZ文件的压缩和解压缩操作。 在给出的代码中,有两个主要的方法:`testGzipOutput()`用于解压GZ...
### 实现Java文件压缩与解压 #### 一、引言 在计算机科学领域,文件压缩与解压是一项非常实用的技术。它不仅能够减少文件占用的空间,提高存储效率,还能加速文件在网络中的传输速度。Java作为一种广泛使用的编程...
在Java编程语言中,处理文件的压缩和解压任务是一项常见的需求。本示例着重讲解如何使用Java API来实现ZIP文件的压缩与解压功能,包括处理子目录和文件。以下将详细介绍相关知识点: 1. **Java档案API(java.util....