我需要解压缩一组zip存档文件。这不是一组zip文件,这是一个大的zip文件,根据大小要求分解为多个zip文件。
例如,如果您有一个2.5MB的zip文件且您的邮件系统仅支持1MB文件,您可以要求Zip创建最多1MB的3个文件。
所以它创建了a.zip.001,a.zip.002,a.zip.003 ......不同的库为它们命名不同,但基本上它们都以相同的方式工作。
你如何在java中解压缩?它看起来不像std中的压缩库支持这一点。
感谢。
答案 0 :(得分:2)
尝试将所有文件连接到一个文件中,然后提取单个文件。类似的东西:
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*/
更新:使用TreeSet
对文件名进行排序,因为dir.list()
并不保证按字母顺序排列。