2011-10-19 63 views
0

我有很多拉鍊與大量的文件,我必須解壓縮到SD卡。使用大量的小文件解壓縮文件

目前我正在使用util.zip包含Zipentry的zip文件內的每個文件。這工作正常,但非常緩慢。

所以我想知道是否有一個lib能夠比Java/Android的普通zip更快地處理這些文件。

編輯:拉鍊是約5到10MB大,幷包含大約50至100 JPG文件,這是每個圖片的一部分。我需要將所有的壓縮文件提取到特定的文件夾。 慢意味着在一小部分時間內在iPhone上提取相同的文件。

編輯2代碼:

ZipInputStream zin = new ZipInputStream(fd); 
    ZipEntry ze = null; 
    while ((ze = zin.getNextEntry()) != null) { 
    System.out.println("Unzipping " + ze.getName()); 

    if (ze.isDirectory()) { 
     File f = new File(targetFilePath + ze.getName()); 

     if (!f.isDirectory()) { 
     f.mkdirs(); 
     } 
    } else { 
     int size; 
     byte[] buffer = new byte[2048]; 

     FileOutputStream outStream = new FileOutputStream(targetFilePath + ze.getName() + ".tile"); 
     BufferedOutputStream bufferOut = new BufferedOutputStream(outStream, buffer.length); 

     while ((size = zin.read(buffer, 0, buffer.length)) != -1) { 
     bufferOut.write(buffer, 0, size); 
     } 

     bufferOut.flush(); 
     bufferOut.close(); 
    } 
    } 
    zin.close(); 
+0

請舉例說明「大量文件」和「非常慢」是什麼意思。 –

+0

嗨LUkas我編輯了我的問題,我希望現在更清楚。 – Thommy

+0

向我們展示一些代碼。 – EJP

回答

1

最好的情況下你可以做的就是去NDK方式。 AFAIK,Google甚至在zlib上提供NDK支持的標頭/ API。