Android 解压缩

android 自带的zip:

解压效率很高,但是压缩文件不能超过2G,否则会解压失败
apache ant.zip 解压包

使用简单,解压效率一般(xapk解压的时候和系统zip比起来会慢很多)
AndroidUn7zip 第三方库

具体效率没测试,但是解压部分xapk的压缩格式会失败
推荐 zip4j 第三方库

和antzip解压对比效率高一点(3.7G的xapk文件,ant耗时3m50s,zip4j耗时3m30s)
支持解压密码,支持指定位置解压,功能齐全,可以参考git说明

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Android解压缩文件时出现"not a directory"(不是目录)错误时,这通常表示解压缩的对象不是一个有效的目录。 出现这个错误的可能原因之一是指定的路径或文件名错误。确保你提供的路径和文件名是正确的,并且指向一个真正存在的目录。 另一个原因是解压缩的对象可能不是一个目录,而是一个文件。在Android中,解压缩函数通常期望目标路径是一个目录,而不是一个文件。如果你要解压缩的是一个文件,而不是目录,你需要修改解压缩的逻辑以适应这种情况。 解决这个问题的一种方法是在解压缩之前检查目标路径是否是一个目录。可以使用File类的isDirectory()方法来判断目标路径是否是一个目录。如果不是一个目录,你可以手动创建一个目录,然后使用解压缩函数将文件解压到这个新创建的目录中。 以下是一个示例代码片段,使用Apache Commons Compress库来解压缩文件: ``` File sourceFile = new File("path/to/source/file.zip"); File destDir = new File("path/to/destination/dir"); if (!destDir.isDirectory()) { destDir.mkdirs(); // 如果目标路径不是一个目录,创建一个新目录 } try (InputStream inputStream = new FileInputStream(sourceFile); ArchiveInputStream ais = new ArchiveStreamFactory() .createArchiveInputStream("zip", inputStream)) { ArchiveEntry entry; while ((entry = ais.getNextEntry()) != null) { File entryFile = new File(destDir, entry.getName()); if (entry.isDirectory()) { entryFile.mkdirs(); // 如果是目录,创建一个新目录 } else { try (OutputStream outputStream = new FileOutputStream(entryFile)) { IOUtils.copy(ais, outputStream); // 拷贝文件内容 } } } } catch (IOException e) { e.printStackTrace(); } ``` 希望这些信息对你有帮助,如果问题仍然存在,请提供更多的细节和相关代码以便更好地帮助你解决问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魑魅魍魉9527

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值