gpt4 book ai didi

java - 提取大量 zipper

转载 作者:行者123 更新时间:2023-11-29 22:23:27 30 4
gpt4 key购买 nike

我有大量(比如 1000 个)可变大小(比如从 4k 到 400k)的 zip,一个 zip 条目。我设法以经典方式解压所有内容,但性能并不真正令人满意...您是否知道可以帮助提高性能的其他方式(nio 或 native )?

提前致谢。

对不起..我忘了贴代码:)

    zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(f)));
while ((zentry = zis.getNextEntry()) != null) {
zentryName = zentry.getName();
File unzippedFile = new File(staging, zentryName);
BufferedOutputStream fos = new BufferedOutputStream(new FileOutputStream(unzippedFile));
byte buffer[] = new byte[32768];
while ((read = zis.read(buffer, 0, 32768)) > 0) {
fos.write(buffer, 0, read);
}


f.delete();
fos.flush();
fos.close();
zis.closeEntry();
}


zis.close();

最佳答案

你的代码看起来不错....

在安卓上解压会很慢。这是相对较低的 CPU 速度(对于此类操作,ARM 肯定比 x86 差)和 SD 卡接口(interface)的速度(请记住,您正在使用相同的相对较低速度的文件系统读取 .zip 和写入解压缩数据)-未压缩的数据可能比压缩数据多几倍,所以我们在这里谈论相当多的写入。

虽然您可以采取一些措施来解决它:

  • 如果可能进行流处理——在极少数情况下,它可能比预先解压缩整个文件更快(例如,如果您只想从 zip 访问几个文件)
  • 根据需要解压缩文件 - 懒惰,在后台......通常 - 你可以给用户一些视觉反馈,让她做一些事情,而你的 zips 在后台解压缩(记得给低优先于线程并可能时不时地暂停)

关于java - 提取大量 zipper ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6561982/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com