【问题标题】:decompress single file from archive in android从android中的存档解压缩单个文件
【发布时间】:2012-08-02 05:48:49
【问题描述】:

我有一个大档案(在我的例子中是 zip),大小约为 100MB,其中包含约 15000 个文件。我需要从这个存档中快速提取一个文件。

我尝试了下一个代码:

final String zipPath = "archive.zip";
FileInputStream fin = new FileInputStream(zipPath);

in = new ZipInputStream(fin);

for (ZipEntry entry = in.getNextEntry(); entry != null; entry = in.getNextEntry()) {
    if(entry.equals("file.name")){
    //unzip this entry
    break;
}
}

它可以工作,但太慢了。

在存档中找到必要文件是否有另一种可能性?例如,在 linux 上,使用命令可以非常快

unzip archive.zip myfile.name

一般来说,我需要从某个存档中找到并解压缩一个文件。它可以是另一种格式...可能是另一种格式会更容易。

【问题讨论】:

  • 你能以一种或另一种方式对这些文件名进行排序吗?
  • 嗨!我觉得不行。我有一个普通的 zip 存档。而且我发现存档中的条目按字母顺序阅读,但是如果我的文件名称为“zzz.file”,则有很多时间可以在存档中找到该文件。
  • 如果它们按字母顺序排序,您可以进行二分搜索(最坏情况复杂度为 O(log(n))。

标签: android archive compression


【解决方案1】:

您可以使用libzip library。

【讨论】:

  • 嗨!谢谢您的回复!但是如果我理解好的 libzip 是一个 C 库,我可以在 android 上使用它吗?
  • 感谢您的提示!真的,我为 android 编译了 libzip,现在我有了静态库 libzip.a 这个文件包含在我的项目中,我在 Activity 中写了static { System.loadLibrary("zip"); }。项目有效!可能这是一个愚蠢的问题,但我现在如何压缩和解压缩文件?我应该在哪里找到功能列表?如果对你来说不太难,请解释一下!谢谢!
猜你喜欢
  • 1970-01-01
  • 2014-08-12
  • 2022-12-21
  • 2021-11-23
  • 1970-01-01
  • 2011-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多