我需要解压缩一组 zip 存档文件。这不是一组 zip 文件,这是一个大 zip 文件,已根据大小要求分成多个 zip 文件。
例如,如果您有一个 2.5MB 的 zip 文件,而您的邮件系统只支持 1MB 的文件,您可以要求 Zip 创建 3 个最多 1MB 的文件。
因此它创建了 a.zip.001、a.zip.002、a.zip.003 ......不同的库对它们的命名不同,但基本上它们的工作方式都相同。
你如何在java中解压缩这个?看起来 std 中的压缩库不支持这一点。
谢谢。
我需要解压缩一组 zip 存档文件。这不是一组 zip 文件,这是一个大 zip 文件,已根据大小要求分成多个 zip 文件。
例如,如果您有一个 2.5MB 的 zip 文件,而您的邮件系统只支持 1MB 的文件,您可以要求 Zip 创建 3 个最多 1MB 的文件。
因此它创建了 a.zip.001、a.zip.002、a.zip.003 ......不同的库对它们的命名不同,但基本上它们的工作方式都相同。
你如何在java中解压缩这个?看起来 std 中的压缩库不支持这一点。
谢谢。
尝试将所有文件连接到一个文件中,然后提取单个文件。就像是:
File dir = new File("D:/arc");
FileOutputStream fos = new FileOutputStream(new File(
"d:/arc/archieve-full.zip"));
FileInputStream fis = null;
Set<String> files = new TreeSet<String>();
for (String fname : dir.list()) {
files.add(fname);
}
for (String fname : files) {
try {
fis = new FileInputStream(new File(dir.getAbsolutePath(), fname));
byte[] b = new byte[fis.available()];
fis.read(b);
fos.write(b);
} finally {
if (fis != null) {
fis.close();
}
fos.flush();
}
}
fos.close();
ZipFile zipFile = new ZipFile("d:/arc/archieve-full.zip");
/*extract files from zip*/
更新:使用 aTreeSet对文件名进行排序,因为dir.list()不保证字母顺序。