天天看点

java .z文件解压_java上传zip文件并解压读取

最近遇到一个这样的需求:传一个压缩包给后台,后台保存后解压读取里面的文件,现学现做。在这里做个记录

文件上传

文件上传有很多方法,这里推荐一个自己感觉挺好用的一种,代码奉上:

@PostMapping(value = "/import", headers = "content-type=multipart/*")

public R importSqlLite(@RequestParam("file") MultipartFile file) {

String path = "C:/Users/aaa/Desktop/新建文件夹/";

File newFile = new File(path + file.getOriginalFilename());

//通过CommonsMultipartFile的方法直接写文件(注意这个时候)

file.transferTo(newFile);

}

文件解压

参考了很多博客,发现了两中解压方式,一种是用org.apache.tools.zip.ZipFile这个包的 工具一种是SpringBoot自带的net.lingala.zip4j.core.ZipFile。因为用的是SpringBoot项目就用的第二种,代码奉上:

//解压路径

private String dest = "C:\\Users\\aaa\\Desktop\\新建文件夹";

//解压后图片保存的路径

private String picPath = "C:/Users/aaa/Desktop/新建文件夹/pic";

public String Uncompress(String source) {

List picPaths = new ArrayList<>();

try {

File zipFile = new File(source);

ZipFile zFile = new ZipFile(zipFile);// 首先创建ZipFile指向磁盘上的.zip文件

zFile.setFileNameCharset("GBK");

File destDir = new File(dest);// 解压目录

zFile.extractAll(dest);// 将文件抽出到解压目录

if (zFile.isEncrypted()) {

zFile.setPassword(password.toCharArray()); // 设置密码

}

zFile.extractAll(dest); // 将文件抽出到解压目录(解压)

List headerList = zFile.getFileHeaders();

List extractedFileList= newArrayList();

for(FileHeader fileHeader : headerList) {

if (!fileHeader.isDirectory()) {

extractedFileList.add(new File(destDir,fileHeader.getFileName()));

}

}

File [] extractedFiles = new File[extractedFileList.size()];

extractedFileList.toArray(extractedFiles);

for(File f:extractedFileList){

System.out.println(f.getAbsolutePath()+"....");

}

}catch(ZipException e) {

}

标签:解压,java,String,zip,extractedFileList,File,new,zFile

来源: https://blog.csdn.net/weixin_43914888/article/details/101549748