我有一个看似简单的问题,但我似乎无法让它正常工作.
我的'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);
}
Run Code Online (Sandbox Code Playgroud)
这有效,但有两个while循环似乎有点多余,基本上做同样的事情.
我知道有一个ZipFile-API有一个size()-method,但它需要一个文件的路径,因为我的文件位于'assets'文件夹中,我很确定从这个目录中读取的唯一方法是通过流式传输.
有没有办法让我做到这一点?