龙空技术网

java 删除zip文件内指定文件/夹,无需解压

爱音乐的程序员小新人 196

前言:

此时大家对“java 解析zip文件”大致比较着重,同学们都需要学习一些“java 解析zip文件”的相关文章。那么小编同时在网络上收集了一些对于“java 解析zip文件””的相关资讯,希望大家能喜欢,小伙伴们一起来了解一下吧!

前言

最近用java写一个工具,要删除某个zip文件下指定目录。在内置API没有找到,后来在网上找到一篇关于zip4j的使用,里面有讲解zip4j删除指定目录。但是测试发现,有些问题,无法直接获取目录的FileHeader。后来自己改编了下,代码如下。

public static void removeDirFromZipArchive(String file, String removeDir) throws ZipException { // 创建ZipFile并设置编码 net.lingala.zip4j.core.ZipFile zipFile zipFile = new net.lingala.zip4j.core.ZipFile(file); zipFile.setFileNameCharset("gbk");//字符集根据环境更换 removeDir += "/"; // 遍历压缩文件中所有的FileHeader, 将指定删除目录下的子文件名保存起来 @SuppressWarnings("unchecked") List<FileHeader> headersList = zipFile.getFileHeaders(); ArrayList<String> removeHeaderNames = new ArrayList<String>(); for (FileHeader subHeader : headersList) { String subHeaderName = subHeader.getFileName(); if (subHeaderName.startsWith(removeDir) && !subHeaderName.equals(removeDir)) { removeHeaderNames.add(subHeaderName); } } // 遍历删除指定目录下的所有子文件, 最后删除指定目录(此时已为空目录) for (String headerNameString : removeHeaderNames) { zipFile.removeFile(headerNameString); } //zipFile.removeFile(removeDir);

标签: #java 解析zip文件 #javazip文件 #彻底删除java #java删除文件夹下所有文件 #java删除文件