java zip解压_Java zip解压及读取

该代码示例展示了如何使用Java进行ZIP文件的解压操作,并读取解压后文件的内容。首先,通过ZipFile类遍历并解压ZIP文件中的所有条目,如果是目录则创建文件夹,如果是文件则写入到目标路径。接着,读取指定路径下所有文件的名称,并读取非目录文件的内容,将其转换为JSONObject并打印。
摘要由CSDN通过智能技术生成

importcom.alibaba.fastjson.JSONObject;import java.io.*;importjava.util.ArrayList;importjava.util.Enumeration;importjava.util.List;importjava.util.zip.ZipEntry;importjava.util.zip.ZipFile;public classDecompressing {public static void zipUncompress(String inputFile) throwsException {

File srcFile= newFile(inputFile);//判断源文件是否存在

if (!srcFile.exists()) {throw new Exception(srcFile.getPath() + "所指文件不存在");

}

String destDirPath= inputFile.replace(".zip", "");//创建压缩文件对象

ZipFile zipFile = newZipFile(srcFile);//开始解压

Enumeration> entries =zipFile.entries();while(entries.hasMoreElements()) {

ZipEntry entry=(ZipEntry) entries.nextElement();//如果是文件夹,就创建个文件夹

if(entry.isDirectory()) {

srcFile.mkdirs();

}else{//如果是文件,就先创建一个文件,然后用io流把内容copy过去

File targetFile = new File(destDirPath + "/" +entry.getName());//保证这个文件的父文件夹必须要存在

if (!targetFile.getParentFile().exists()) {

targetFile.getParentFile().mkdirs();

}

targetFile.createNewFile();//将压缩文件内容写入到这个文件中

InputStream is =zipFile.getInputStream(entry);

FileOutputStream fos= newFileOutputStream(targetFile);intlen;byte[] buf = new byte[1024];while ((len = is.read(buf)) != -1) {

fos.write(buf,0, len);

}//关流顺序,先打开的后关闭

fos.close();

is.close();

}

}

}public static void readFiles(String inputFile) throwsException {

File srcFile= newFile(inputFile);if(srcFile.isDirectory()) {

File next[]=srcFile.listFiles();for (int i = 0; i < next.length; i++) {

System.out.println(next[i].getName());if(!next[i].isDirectory()){

BufferedReader br= new BufferedReader(newFileReader(next[i]));

List arr1 = new ArrayList<>();

String contentLine ;while ((contentLine = br.readLine()) != null) {

JSONObject js=JSONObject.parseObject(contentLine);

arr1.add(contentLine);

}

System.out.println(arr1);

}

}

}

}public static voidmain(String[] args) {try{

String path= "E:\\data\\test\\aaa.zip";

zipUncompress(path);

readFiles(path.replace(".zip", ""));

}catch(Exception e) {

e.printStackTrace();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值