首页 > 解决方案 > Android:获取 zip 中的文件数量(使用存储卷/存储访问框架)

问题描述

我正在使用存储卷将我的 Android 7.0 手机 SD 卡上的 zip 文件解压缩到 SD 卡上的文件夹中:

InputStream is = getContentResolver().openInputStream(myZipFile.getUri());
BufferedInputStream bis = new BufferedInputStream(is);
ZipInputStream zis = new ZipInputStream(bis);
ZipEntry zipEntry;

while ((zipEntry = zis.getNextEntry()) != null) { ... }

要在对话框中显示进度,我需要 zip 文件中的元素总数。您如何使用 Storage Volume/StorageAccesFramework 做到这一点?

你不能这样做,因为你没有得到 SV/SAF 的实际路径:

ZipFile zip = new ZipFile(pathToZipFile);
int size = zip.size();

...并遍历整个文件以计算文件数,然后再次遍历它以解压缩文件很慢:

while ((zipEntry = zis.getNextEntry()) != null) {
    size++;
}

标签: javaandroidzipandroid-7.0-nougatstorage-access-framework

解决方案


推荐阅读