java - 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++;
}
解决方案
推荐阅读
- node.js - 如何在创建后立即查询 S3 存储桶时避免竞争条件?
- android - 如何制作 Firebase ShortDynamicLink Xamarin.Android
- shell - 列出 vCenter powercli 脚本中的空端口组
- flutter - 如何通过 WhatsApp url 共享 csv 文件?
- duplicates - 保存文件时如何附加时间戳而不是数字
- macos - Android Studio 在生成签名的 APK 时试图在 Mac OS 的错误位置找到构建文件夹
- windows - Windows 批处理文件:GOTO、DELAYEDEXPANSION 问题
- javascript - 在定义 Sequelize 模型时运行行查询
- flutter - 显示每月颤振的每个星期的工作日
- pytorch - 确定具有与给定类型等效的精度/范围的复杂 torch.dtype