我有很多包含大量文件的 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/