在安卓系统中从归档文件中解压单个文件

4

我有一个大小约为100MB,包含大约15000个文件的大型存档(在我的情况下为zip)。 我需要快速从这个归档中提取一个文件。

我尝试了以下代码:

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

通常情况下,我需要从一些归档文件中找到并解压缩一个文件。它可以是其他格式...也许使用其他格式更容易。


你能以某种方式对这些文件名进行排序吗? - Amokrane Chentir
嗨!我认为不是这样的。我有一个普通的zip归档文件。我发现归档文件中的条目按字母顺序读取,但如果我的文件名为“zzz.file”,在归档文件中查找此文件需要很长时间。 - lubart
如果它们按字母顺序排序,您可以进行二分查找(最坏情况下的复杂度为O(log(n)))。 - Amokrane Chentir
1个回答

1

你好!谢谢回复!但是如果我理解正确,libzip是一个C库,那么我能在安卓上使用它吗? - lubart
谢谢你的提示!真的,我已经为Android编译了libzip,现在我有了静态库libzip.a。 我将这个文件包含到我的项目中,并在Activity中写下static { System.loadLibrary("zip"); },项目可以正常工作! 也许这是一个愚蠢的问题,但我现在该如何压缩和解压缩文件?我应该从哪里找到函数列表? 如果不太难,请给我解释一下!谢谢! - lubart
请参考以下程序相关的内容:示例:https://dev59.com/a2kv5IYBdhLWcg3wqSj1请返回已翻译的文本。 - Mark Adler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接