java - 解压里面有大量小文件的文件

标签 java android zip extract

我有很多包含大量文件的 zip 文件,我必须将它们解压到 SD 卡上。

目前,我正在使用 util.zip 包和 Zipentry 来处理 zip 内的每个文件。这工作正常,但速度很慢。

所以我想知道是否有一个库可以比 Java/Android 的普通 zip 更快地处理这些文件。

编辑:zip 是大约 5 到 10MB 大的文件,包含大约 50 到 100 个 jpg 文件,每个文件都是图片的一部分。我需要将所有 zip 解压缩到特定文件夹。 慢意味着在 iPhone 上提取相同的文件只需要一小部分时间。

编辑2代码:

ZipInputStream zin = new ZipInputStream(fd);
    ZipEntry ze = null;
    while ((ze = zin.getNextEntry()) != null) {
    System.out.println("Unzipping " + ze.getName());

    if (ze.isDirectory()) {
        File f = new File(targetFilePath + ze.getName());

        if (!f.isDirectory()) {
        f.mkdirs();
        }
    } else {
        int size;
        byte[] buffer = new byte[2048];

        FileOutputStream outStream = new FileOutputStream(targetFilePath + ze.getName() + ".tile");
        BufferedOutputStream bufferOut = new BufferedOutputStream(outStream, buffer.length);

        while ((size = zin.read(buffer, 0, buffer.length)) != -1) {
        bufferOut.write(buffer, 0, size);
        }

        bufferOut.flush();
        bufferOut.close();
    }
    }
    zin.close();

最佳答案

最好的情况是采用 NDK 方式。 AFAIK,Google 甚至在 zlib 上的 NDK 中提供了受支持的 header /API。

关于java - 解压里面有大量小文件的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7827082/

相关文章:

java - Android SQLite数据库版本,更改结构现在无法查看DB

java - 如何使 TimerTask 访问单例的隐私?

android - 如何在 Android 中删除按钮或使其不可见?

android - 为什么MediaCodec的解码器输出的不是统一的YUV格式(如YUV420P)?

java - 将文件添加到 zip 文件 java 中的文件夹

java - 从整体迁移到微服务

java - 为什么jdk中没有Queue或Stack API

android - 从 Android Assets 文件夹中的 ZIP 文件中读取文件

android - 如何在 View pager 的 PagerTitleStrip 中设置标题

python zipfile目录也被复制