zip4j -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);
		}
	}

 转载地址:https://blog.csdn.net/djun100/article/details/18007099

猜你喜欢

转载自blog.csdn.net/weixin_42744801/article/details/81182302