java zip 压缩 第三方库_有什么好的Java库来压缩/解压缩文件?

使用Apache Commons-IO,IOUtils您可以执行以下操作:

java.util.zip.ZipFile zipFile = new ZipFile(file);

try {

Enumeration extends ZipEntry> entries = zipFile.entries();

while (entries.hasMoreElements()) {

ZipEntry entry = entries.nextElement();

File entryDestination = new File(outputDir,  entry.getName());

if (entry.isDirectory()) {

entryDestination.mkdirs();

} else {

entryDestination.getParentFile().mkdirs();

InputStream in = zipFile.getInputStream(entry);

OutputStream out = new FileOutputStream(entryDestination);

IOUtils.copy(in, out);

IOUtils.closeQuietly(in);

out.close();

}

}

} finally {

zipFile.close();

}

它仍然是一些样板代码,但只有1个非奇异的依赖项:Commons-IO

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,解压缩文件通常使用`java.util.zip`提供的类,如`ZipInputStream`, `ZipFile`, 或者第三方库如Apache Commons Compress或Java Advanced Imaging (JAI)。以下是使用这些工具的基本步骤: 1. 使用`ZipInputStream`或`ZipFile`解压`.zip`文件: ```java import java.io.*; import java.util.zip.*; public void unzipFile(String zipPath, String destDir) { try { ZipFile zip = new ZipFile(zipPath); Enumeration<ZipEntry> entries = zip.entries(); while (entries.hasMoreElements()) { ZipEntry entry = entries.nextElement(); String filePath = destDir + File.separator + entry.getName(); if (!entry.isDirectory()) { extractEntry(zip, entry, new File(filePath)); } } zip.close(); } catch (IOException e) { e.printStackTrace(); } } private void extractEntry(ZipFile zip, ZipEntry entry, File destination) throws IOException { InputStream in = zip.getInputStream(entry); OutputStream out = new FileOutputStream(destination); byte[] buffer = new byte[1024]; int read; while ((read = in.read(buffer)) != -1) { out.write(buffer, 0, read); } in.close(); out.close(); } ``` 2. 使用第三方库(如Apache Commons Compress): 如果你选择使用Apache Commons Compress,首先需要添加依赖。例如,你可以通过Maven添加`commons-compress`依赖: ```xml <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-compress</artifactId> <version>1.21</version> </dependency> ``` 代码示例: ```java import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; import org.apache.commons.compress.archivers.zip.ZipFileFactory; public void unzipWithApacheCommons(String zipPath, String destDir) { try (ZipFile zip = ZipFileFactory.create(new File(zipPath))) { for (ZipArchiveEntry entry : zip) { if (!entry.isDirectory()) { String filePath = destDir + File.separator + entry.getName(); Files.copy(zip.getInputStream(entry), Paths.get(filePath)); } } } catch (IOException e) { e.printStackTrace(); } } ``` 使用以上方法时,请确保正确处理可能出现的异常,并确保有足够的权限访问和写入目标目录。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值