网站首页 > java教程 正文
一、导入相关依赖包
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.8.1</version>
</dependency>
二、创建相应的工具类
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import com.xxx.xxx.entity.xxx.WkcrWord;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
/**
* 解压文件的工具类
*/
public class ZipUtil {
/**
* 解压文件
* @param directory 文件目录
* @param zip 文件zip的压缩包
*/
public static List<WkcrWord> unZipFile(String directory, File zip) {
List<WkcrWord> filePathList=new ArrayList<>();
try {
int count;
int buffer = 2048;
File file;
InputStream is;
FileOutputStream fos;
BufferedOutputStream bos;
//根据不同环境,不同的文件,需要使用到不同的编码格式
ZipFile zipFile = new ZipFile(zip, "GBK");
Enumeration en = zipFile.getEntries();
createFolder(directory);
while (en.hasMoreElements()) {
byte buf[] = new byte[buffer];
ZipEntry entry = (ZipEntry) en.nextElement();
//获取压缩包中的文件的名字
String fileName = entry.getName();
if(fileName.contains("/")){
fileName=fileName.substring(fileName.lastIndexOf("/")+1);
}
String filePath = directory + fileName;
//根据业务逻辑创建相应的实体类
WkcrWord wkcrWord=new WkcrWord();
wkcrWord.setName(fileName);
wkcrWord.setWordUrl(filePath);
//根据不同的文件后缀设置正则表达式
String compile = ".*.doc.*|.*.docx.*";
//符合的保存
if(filePath.matches(compile)){
filePathList.add(wkcrWord);
}
if(entry.isDirectory()){
createFolder(filePath);
}else{
file = new File(filePath);
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.close();
fos.close();
is.close();
}
}
zipFile.close();
//遍历当前上传的word进行转化为html进行相应的保存
filePathList.stream().forEach(wkcrWord-> wkcrWord.setWordTxt(DocTableReadUtil.saveWord(wkcrWord.getWordUrl(),wkcrWord.getName())));
} catch (IOException e) {
e.printStackTrace();
}finally {
zip.delete();
}
return filePathList;
}
/**
* 创建目录
* @param path 文件的目录
*/
private static void createFolder(String path) {
try {
File uploadFilePath = new File(path);
if (uploadFilePath.exists() == false) {
uploadFilePath.mkdirs();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
- 上一篇: 22张图带你深入剖析前缀、中缀、后缀表达式以及表达式求值
- 下一篇: Java问题排查工具单
猜你喜欢
- 2025-01-09 一份超详细的Java问题排查工具单
- 2025-01-09 读取properties文件的6种方式,建议收藏!
- 2025-01-09 后端精选-Java问题排查工具清单
- 2025-01-09 alibaba cola 框架代码生成器
- 2025-01-09 「数据结构与算法」前缀和后缀差分
- 2025-01-09 java学习笔记,一个学霸朋友的超详细java笔记
- 2025-01-09 OFD文件用哪些软件可以打开预览?
- 2025-01-09 Java 序列化
- 2025-01-09 java项目相关知识点整理
- 2025-01-09 Java问题排查工具单
你 发表评论:
欢迎- 04-24Java Collections 工具类集合框架中常用算法解析
- 04-24桶排序的简单理解
- 04-24Java集合框架底层实现原理大揭秘
- 04-24Java 集合框架全面解析:选对数据结构,提升开发效率
- 04-24c#集合排序
- 04-24Java面试中常被问到的集合类深度解读
- 04-24VBA技术资料MF278:对集合进行排序
- 04-24Spring 最常用的 7 大类注解,史上最强整理
- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)