前言
最近用java写一个工具,要删除某个zip文件下指定目录。在内置API没有找到,后来在网上找到一篇关于zip4j的使用,里面有讲解zip4j删除指定目录。但是测试发现,有些问题,无法直接获取目录的FileHeader。后来自己改编了下,代码如下。
- public static void removeDirFromZipArchive(String file, String removeDir) throws ZipException {
- // 创建ZipFile并设置编码
- net.lingala.zi zipFile zipFile = new net.lingala.zi(file);
- zi("gbk");//字符集根据环境更换
- removeDir += "/";
- // 遍历压缩文件中所有的FileHeader, 将指定删除目录下的子文件名保存起来
- @SuppressWarnings("unchecked")
- List<FileHeader> headersList = zi();
- ArrayList<String> removeHeaderNames = new ArrayList<String>();
- for (FileHeader subHeader : headersList) {
- String subHeaderName = ();
- if (removeDir)
- && !(removeDir)) {
- removeHeaderNames.add(subHeaderName);
- }
- }
- // 遍历删除指定目录下的所有子文件, 最后删除指定目录(此时已为空目录)
- for (String headerNameString : removeHeaderNames) {
- zi(headerNameString);
- }
- //zi(removeDir);