我有一個似乎很容易的問題,但我似乎無法讓它正常工作。Android:獲取Zip中的文件數量?
我在我的'assets'文件夾中有一個zip文件,需要解壓,我有一個ProgessBar
,我想在其中向用戶顯示進度如何。
我有一切工作,但我想將ProgessBar
最大值設置爲zip文件中的文件數。此文件夾中的文件數量有時會發生變化,因此我希望ProgessBar
與zip中包含的文件數量有關。
我正在使用ZipInputStream
-API,但似乎沒有辦法獲取zip文件中的文件數量。我能想到的唯一的辦法是這樣做的:
ZipInputStream zin = new ZipInputStream(getAssets().open(
"myFile.zip"));
int numFiles = 0;
int increment = 0;
while (zin.getNextEntry() != null) {
numFiles++;
}
ZipEntry ze = null;
//Set the Max..value here..
progessBar.setMax(numFiles);
while ((ze = zin.getNextEntry()) != null) {
increment++;
progessBar.setProgress(increment);
}
這工作,但有兩個while循環似乎有點多餘,其基本上都是做同樣的事情。
我知道有一個ZipFile
-API,它有一個size()
-方法,但它需要一個文件路徑,並且由於我的文件位於「資產」文件夾中,所以我很確定只有讀取這個目錄是通過流式傳輸。
有沒有辦法讓我做到這一點?
但如果一個文件是10kb,另一個文件是10mb並且存檔中只有兩個文件會怎麼樣? – pleerock
不起作用,因爲ZipInputStream沒有任何稱爲getSize的方法。 – melbic