java解压缩zip、rar

news/2024/11/23 5:31:00/

解压缩zip

  1. 使用hutool工具包中ZipUtil工具类
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.2</version>
</dependency>
// 参数是压缩包路径和编码
// GBK是为了解决中文解压缩乱码的问题
ZipUtil.unzip(f.getAbsolutePath(), Charset.forName("GBK"));
  1. 使用zip4j工具包
<dependency><groupId>net.lingala.zip4j</groupId><artifactId>zip4j</artifactId><version>2.9.1</version>
</dependency>
ZipFile zipFile = new ZipFile(f.getAbsolutePath());
// 中文乱码处理
zipFile.setCharset(Charset.forName("GBK"));
File zdir = new File(f.getAbsolutePath().substring(0, f.getAbsolutePath().indexOf(".")));
if (!zdir.isDirectory()) {zdir.mkdir();
}
try {// 解压到指定文件夹zipFile.extractAll(zdir.getAbsolutePath());
} catch (ZipException e) {e.printStackTrace();
}

解压缩rar

  1. 使用junrar工具包
<dependency><groupId>com.github.junrar</groupId><artifactId>junrar</artifactId><version>7.4.0</version>
</dependency>
File zdir = new File(f.getAbsolutePath().substring(0, f.getAbsolutePath().indexOf(".")));
if (!zdir.isDirectory()) {zdir.mkdir();
}
try {Junrar.extract(f.getAbsolutePath(), zdir.getAbsolutePath());
} catch (IOException e) {e.printStackTrace();
} catch (RarException e) {e.printStackTrace();
}
  1. 使用sevenzipjbinding
<dependency><groupId>net.sf.sevenzipjbinding</groupId><artifactId>sevenzipjbinding</artifactId><version>16.02-2.01</version>
</dependency>
<dependency><groupId>net.sf.sevenzipjbinding</groupId><artifactId>sevenzipjbinding-all-platforms</artifactId><version>16.02-2.01</version>
</dependency>
try {// f -  压缩文件RandomAccessFile randomAccessFile = new RandomAccessFile(f.getAbsolutePath(), "r");IInArchive archive = SevenZip.openInArchive(ArchiveFormat.RAR5,  new RandomAccessFileInStream(randomAccessFile));// 解压文件路径File zdir = new File( f.getAbsolutePath().substring(0,  f.getAbsolutePath() .indexOf(".")));if (!zdir.isDirectory()) {zdir.mkdir();}int[] in = new int[archive.getNumberOfItems()];for(int i=0;i<in.length;i++){in[i] = i;}archive.extract(in, false, new ExtractCallback(archive, zdir.getAbsolutePath()));archive.close();randomAccessFile.close();
} catch (FileNotFoundException | SevenZipException e) {e.printStackTrace();
} catch (IOException e) {e.printStackTrace();
}
private static class ExtractCallback implements IArchiveExtractCallback {private final IInArchive inArchive;private final String extractPath;public ExtractCallback(IInArchive inArchive, String extractPath) {this.inArchive = inArchive;if (!extractPath.endsWith("/") && !extractPath.endsWith("\\")) {extractPath += File.separator;}this.extractPath = extractPath;}@Overridepublic void setTotal(long total) {}@Overridepublic void setCompleted(long complete) {}@Overridepublic ISequentialOutStream getStream(int index, ExtractAskMode extractAskMode) throws SevenZipException {return data -> {String filePath = inArchive.getStringProperty(index, PropID.PATH);FileOutputStream fos = null;try {File path = new File(extractPath + filePath);if(!path.getParentFile().exists()){path.getParentFile().mkdirs();}if(!path.exists()){path.createNewFile();}fos = new FileOutputStream(path, true);fos.write(data);} catch (IOException e) {log.info("IOException while extracting " + filePath);} finally{try {if(fos != null){fos.flush();fos.close();}} catch (IOException e) {log.error("Could not close FileOutputStream", e);}}return data.length;};}@Overridepublic void prepareOperation(ExtractAskMode extractAskMode) {}@Overridepublic void setOperationResult(ExtractOperationResult extractOperationResult) {}
}

http://www.ppmy.cn/news/696744.html

相关文章

压缩——实测rar压缩的各种选项对文件压缩的效果(包括固实压缩)

本文为压缩相关内容的部分内容&#xff0c;如有更新&#xff1a;https://alvincr.com/2021/01/compress-entropy/ 二&#xff1a;压缩选项 1 压缩方式 从存储—>最好&#xff0c;压缩速度依次减慢&#xff0c;但是压缩效果依次增强。 个人测试&#xff1a;为了真实感受一下…

flutter笔记:network_info_plus 模块

flutter实战之常用模块 network_info_plus模块及其应用 - 文章信息 - Author: Jack Lee (jcLee95) Visit me at: https://jclee95.blog.csdn.netEmail: 291148484163.com. Shenzhen ChineAddress of this article:https://blog.csdn.net/qq_28550263/article/details/13141787…

java对压缩文件7z、rar、zip的解压

需求&#xff0c;对Spring传递上来的文件进行解压&#xff0c;分析数据&#xff0c;这是解压模块 <!--apache提供的压缩包依赖--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-compress</artifactId><versio…

华硕(苏研)面经

首先是一个线上测试&#xff0c;具体是一些c语言&#xff0c;逻辑推理以及算法等问题&#xff0c;当时没好好做&#xff0c;以为凉了&#xff0c;但是过了好久突然收到了面试通知。 收到面试通知后让你进行一个性格测试&#xff0c;并完成一个履历表。 然后进行一面&#xff…

C语言学习(三十)---枚举、位段、联合体

这几天在往实习的地方弄东西&#xff0c;比较累&#xff0c;因此没有更新&#xff0c;在几天前我们学习了内存操作函数&#xff0c;其与之前学习的字符串操作函数相比&#xff0c;适用范围更加广泛&#xff0c;大家要注意掌握学习&#xff0c;今天我们将学习枚举、位段和联合体…

互联网/计算机 校园招聘信息大全!

要想找到好工作&#xff0c;及时获得大厂的招聘信息肯定是第一步啦&#xff01; 微信公众号 “计算机校招”&#xff0c;每天都会更新最新的“互联网/计算机/科技类 公司” 校园招聘信息&#xff0c;欢迎关注&#xff01; 下面是2020年 春招 包含 计算机/软件技术类 的公司列表…

2013年各大小IT公司待遇,绝对真实,一线数据!

以下绝对是各大公司2013届校招的数据&#xff0c;少数几个是20122011的数据&#xff0c;都已经特别注明&#xff0c;数据真实重要性高于一切&#xff01;&#xff01;&#xff01;2013年以前的数据来源&#xff1a;西电好网论坛和西电睿思论坛&#xff0c;应届生论坛&#xff0…

辰视冯良炳博士作为专家出席演讲的2021视觉系统设计会议圆满闭幕

2020年长三角城市群总GDP达到24.47万亿元&#xff0c;远超粤港澳大湾区和京津冀地区。上海作为长三角城市之一&#xff0c;在工业机器人、新能源汽车等智能制造装备细分领域发展加快。 作为智能制造母行业的工业&#xff0c;工业的发展状况无疑会对智能制造的发展带来明显的影…