2013-07-25 29 views
0

我想讀取一個帶有ZipInputStream的Zip存檔。通過沒有任何問題的所有條目等,所以我循環:Rewinding ZipInputStream - Android

try { 
       while((ze = zis.getNextEntry()) != null) { 
        Log.v(this.toString(), "Name = " + name); 

       } 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      //e.printStackTrace(); 
      Log.e(this.toString(), "IOException in creating ZipEntry."); 
     } 

當試圖如上所述使用zis可變讀取另一個功能相同的zip文件,以相同的方式,線ze = zis.getNextEntry()返回null。這是可以理解的,因爲流的末尾已經達到。

我的問題:
1.如何「倒回」一個流?
2.是否有替代方案創建臨時文件ZipInputStream,並在需要再次讀取zip文件的下一個函數中使用它?

回答

1

無法倒帶Java中的ZipInputStream

唯一的選擇是重構你的代碼只需要讀取一次流。這很可能對你有利(取決於你的情況),因爲它不需要多次解壓縮數據。

也許你可以將數據解壓縮到臨時緩存目錄。

+0

將數據解壓縮到臨時緩存?聽起來很有趣。這個緩存駐留在哪裏?我可以把它放在SD卡上嗎? – Sriram

相關問題