Java -- 指定路径下的zip文件解压,其中的zip中包含文件全部解压
Posted 小智RE0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java -- 指定路径下的zip文件解压,其中的zip中包含文件全部解压相关的知识,希望对你有一定的参考价值。
例如需要将demoZipSources
路径下的zip文件中的全部解压到demoZipTarget
文件夹
例如demoZipSources
下的zip文件SourceZip.zip
,其中分别有三个zip;其中这几个文件夹有不同的文件,需要将这些文件全部解压到指定的同一个目录下;
效果,解压所有文件到目标文件
import java.io.*;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.LinkedList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
/**
* @BelongsProject: xiaozhire0goods
* @BelongsPackage: com.lzq.demoUse
* @Author: 小智RE0 --- 学习记录
* @Date: 2022/12/8 21:36
* @Description: TODO
*/
public class DemoFileMutilUnZip
public static void main(String[] args)
dealUnZip();
//处理解压zip
public static void dealUnZip()
List<String> sourcesList = new ArrayList<>();
String zipPath1 = "F:\\\\demoZipSources\\\\SourceZip.zip";
String targetZipPath = "F:\\\\demoZipTarget\\\\";
File targetFile = new File(targetZipPath);
sourcesList.add(zipPath1);
//sourcesList 真实使用时可能有多个;此处先以一个文件为例;
if (sourcesList != null && !sourcesList.isEmpty())
for (String zipPath : sourcesList)
if (zipPath.endsWith(".zip"))
dealzip(zipPath, targetZipPath);
//解压后的文件夹可能还有文件夹;
File[] files = targetFile.listFiles();
if (files != null)
for (File file : files)
String fileName = file.getName();
if (fileName.endsWith(".zip"))
dealzip(file.getPath(), targetZipPath);
//用完后就删掉这个zip;
file.delete();
//处理文件解压;
public static void dealzip(String zipSourcePath, String targetZipPath)
//判断目标地址是否存在,如果没有就创建
File pathFile = new File(targetZipPath);
if (!pathFile.exists())
pathFile.mkdirs();
ZipFile zipFile = null;
try
zipFile = new ZipFile(zipSourcePath, Charset.forName("UTF-8"));
//若zip中含有中文名文件,换GBK
//zip = new ZipFile(zipPath, Charset.forName("GBK"));
//遍历里面的文件及文件夹
Enumeration entries = zipFile.entries();
while (entries.hasMoreElements())
ZipEntry entry = (ZipEntry) entries.nextElement();
String zipEntryName = entry.getName();
InputStream in = zipFile.getInputStream(entry);
//也就是把这个文件加入到目标文件夹路径;
String outpath = (targetZipPath + zipEntryName).replace("/", File.separator);
//不存在则创建文件路径
File file = new File(outpath.substring(0, outpath.lastIndexOf(File.separator)));
if (!file.exists())
file.mkdirs();
File outPathFile = new File(outpath);
/*String outPathFileName = outPathFile.getName();
if(outPathFileName.endsWith(".zip"))
dealzip(outpath,targetZipPath);
*/
//文件夹就不解压;
if (outPathFile.isDirectory())
continue;
OutputStream out = new FileOutputStream(outpath);
byte[] bf = new byte[2048];
int len;
while ((len = in.read(bf)) > 0)
out.write(bf, 0, len);
in.close();
out.close();
zipFile.close();
catch (Exception e)
e.printStackTrace();
以上是关于Java -- 指定路径下的zip文件解压,其中的zip中包含文件全部解压的主要内容,如果未能解决你的问题,请参考以下文章