【发布时间】: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