2012-03-04 47 views
0

有沒有辦法打開zip文件並訪問它,因爲它在Android中解壓縮?我有數據的zip文件,我需要通過應用程序訪問,我不想將它解壓到某個文件夾並從那裏打開。所以我希望直接從zip文件訪問數據,而不用解壓縮它。我現在試圖使用ZipFile,但我還沒有找到任何用法,這可能對我有用。這種方法甚至可能嗎?Android Zip文件訪問

感謝

回答

0

好,因爲每個文件,以使用其內容,您必須打開,並在爲此,您使用的InputStream讀它在內存中,通常。在這種情況下,您必須閱讀zip文件的條目,以便您可以遍歷zip條目,並且當您找到要查找的條目時,可以獲取ZipInputStream並像正常文件一樣讀取

+0

謝謝,我已經拿出來ZipInputStream,但我只succeded,當我救ZipInputStream到一個文件中。我不能將它保存爲文件,而是在旅途中處理它?如何製作「虛擬」文件,該文件將被採用並且不保存在內存中? – Waypoint 2012-03-04 17:38:44

+0

以及依賴於數據消費者。例如,您的應用程序可以直接從InputStream或字節數組讀取數據..這取決於您 – Blackbelt 2012-03-04 18:36:28

2

這是我一直使用的代碼'即時解壓縮'並創建drawable。

private void createBitmapDrawables() throws IOException { 
    // TODO Auto-generated method stub 
    InputStream is = getResources().getAssets().open("images.zip"); 
      ZipInputStream zis = new ZipInputStream(new BufferedInputStream(is)); 
      try { 
       ZipEntry ze; 
       while ((ze = zis.getNextEntry()) != null) { 
        ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
        byte[] buffer = new byte[1024]; 
        int count; 
        while ((count = zis.read(buffer)) != -1) { 
         baos.write(buffer, 0, count); 
        } 
        String file = ze.getName(); 
        byte[] bytes = baos.toByteArray(); 
        drawable = createBitmapDrawable(bytes, file); 

       } 
      } finally { 
       zis.close(); 
      } 


} 

從Android Dev網站上獲得很多。 希望它有幫助。