2012-08-04 95 views
4

我有一个大的存档(在我的情况邮编)与大小吧〜100MB,并用〜15000的文件。我需要快速从该压缩文件中提取一个文件。解压缩从归档单个文件的Android

我试了下代码:

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 

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

+0

你能以这样或那样的文件名进行排序? – 2012-08-04 11:28:07

+0

嗨!我想不是。我有一个普通的zip压缩文件。我发现按照字母顺序阅读档案中的条目,但是如果我的文件名称为“zzz.file”,那么在档案中找到这个文件有很多时间。 – lubart 2012-08-04 13:11:58

+0

如果他们按字母顺序排序,你可以做一个二进制搜索(O(日志(最坏情况复杂N))。 – 2012-08-04 18:21:13

回答

1

可以使用libzip library

+0

你好!谢谢你的答复!但如果我的理解不错libzip是一个C库,我可以用它在Android ? – lubart 2012-08-05 10:51:00

+1

您可以编译任何东西到你的代码,你喜欢的。 – 2012-08-05 14:05:55

+0

谢谢你的小费!为Android真的,我编译libzip现在我libzip.a这个文件我包括我的项目静态库和我写的'静态{系统.loadLibrary(“zip”);}'in Activity。Project works!可能是愚蠢的问题,但我现在可以如何压缩和解压缩文件?我应该在哪里找到函数列表?请解释一下,如果它不太难谢谢! – lubart 2012-08-08 00:40:35