我正在寻找最有效的方法(在速度方面)从 ZIP 文件的中间检索一些文件。
例如,我有 ZIP 文件,其中包括 700 个文件夹(标记为 1 到 700)。每个文件夹等于图片和 mp3 文件。有一个名为 Info 的特殊文件夹,其中包含 XML 文件。问题是,我需要遍历此 ZIP 文件以查找 XML 文件,然后显示来自所需文件夹的图像。我正在使用 ZipFile 方法(因此我正在遍历整个 ZIP 文件,即使我想要文件夹 666,我也需要浏览 ZIP 文件中的 665 个项目)-> 从 ZIP 文件中选择非常慢。
我想问你,如果你遇到过类似的问题,你是怎么解决的?Java中是否有任何方法可以将我的ZIP文件转换为虚拟文件夹以更快地浏览它?是否有任何外部库,在时间方面效率最高?
源代码片段:
try {
FileInputStream fin = new FileInputStream(
"sdcard/external_sd/mtp_data/poi_data/data.zip");
ZipInputStream zin = new ZipInputStream(fin);
ZipEntry ze = null;
while ((ze = zin.getNextEntry()) != null) {
// Log.d("ZE", ze.getName());
if (ze.getName().startsWith("body/665/")) {
// Log.d("FILE F", "soubor: "+ze.getName());
if (ze.getName().endsWith(".jpg")
|| ze.getName().endsWith(".JPG")) {
Log.d("OBR", "picture: " + ze.getName());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int count;
while ((count = zin.read(buffer)) != -1) {
baos.write(buffer, 0, count);
}
byte[] bytes = baos.toByteArray();
bmp = BitmapFactory.decodeByteArray(bytes, 0,
bytes.length);
photoField.add(bmp);
i++;
}
}
}
}