2012-08-04 97 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