文件解压

Posted 拾荒者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件解压相关的知识,希望对你有一定的参考价值。

package com.xfm.utils;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;

import java.io.*;
import java.util.Enumeration;

/**
* 解压Zip文件工具类
*
* @author xfm
*/
public class Decompress {
private static final int buffer = 2048;

/**
* 解压Zip文件
*
* @param path 文件目录
*/
public static void unZip(String path) {
int count = -1;
String savepath = "";

File file = null;
InputStream is = null;
FileOutputStream fos = null;
BufferedOutputStream bos = null;
//保存解压文件目录
savepath = path.substring(0, path.lastIndexOf(".")) + File.separator;
//创建保存目录
new File(savepath).mkdir();
ZipFile zipFile = null;
try {
//解决中文乱码问题
zipFile = new ZipFile(path, "gbk");
Enumeration<?> entries = zipFile.getEntries();

while (entries.hasMoreElements()) {
byte buf[] = new byte[buffer];

ZipEntry entry = (ZipEntry) entries.nextElement();

String filename = entry.getName();
boolean ismkdir = false;
//检查此文件是否带有文件夹
if (filename.lastIndexOf("/") != -1) {
ismkdir = true;
}
filename = savepath + filename;
//如果是文件夹先创建
if (entry.isDirectory()) {
file = new File(filename);
file.mkdirs();
continue;
}
file = new File(filename);
//如果是目录先创建
if (!file.exists()) {
if (ismkdir) {
//目录先创建
new File(filename.substring(0, filename.lastIndexOf("/"))).mkdirs();
}
}
file.createNewFile(); //创建文件

is = zipFile.getInputStream(entry);
fos = new FileOutputStream(file);
bos = new BufferedOutputStream(fos, buffer);

while ((count = is.read(buf)) > -1) {
bos.write(buf, 0, count);
}
bos.flush();
bos.close();
fos.close();

is.close();
}

zipFile.close();

} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
try {
if (bos != null) {
bos.close();
}
if (fos != null) {
fos.close();
}
if (is != null) {
is.close();
}
if (zipFile != null) {
zipFile.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}


public static void main(String[] args) {
unZip("E:\\tobiasy_decompiler_v2.4.0_SNAPSHOT.zip");
}
}

以上是关于文件解压的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段2——.vue文件的模板

PAT 1078. 字符串压缩与解压

在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途

1078. 字符串压缩与解压 (20)

代码片段 PHP,预期文件结尾,我错在哪里?

代码适用于与单个 html 文件不同的堆栈片段