解压缩内部有大量小文件的文件

时间:2011-10-19 19:37:23

标签: java android zip extract

我有很多带有大量文件的拉链,我必须解压缩到SD卡。

目前,我在拉链内的每个文件中使用util.zipZipentry。这很好但很慢。

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

编辑:拉链是大约5到10MB的档案,包含大约50到100个jpg文件,每个文件都是图片的一部分。我需要将所有拉链提取到特定文件夹。 慢意味着在很短的时间内在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();

1 个答案:

答案 0 :(得分:1)

你可以做的最好的情况是去NDK方式。 AFAIK,Google甚至在zlib上的NDK中提供受支持的标头/ API。