【发布时间】:2013-12-28 03:46:47
【问题描述】:
我有一个压缩文件file.zip。有没有办法改变要存储的文件的压缩级别(不压缩)。
我已经编写并尝试了以下代码,它可以工作,但我将在内存和存储受限且可能没有足够空间的环境中运行它。我正在使用 zip4j 库。
此代码将输入的 zip 解压缩到一个文件夹,然后以存储压缩级别对其进行重新压缩。这样做的问题是,在执行的某个时间点,存储中有 3 个 zip 副本,这是一个问题,因为空间是一个限制。
try {
String zip = "input.zip";
final ZipFile zipFile = new ZipFile(zip);
zipFile.extractAll("dir");
File file = new File("dir");
ZipParameters params = new ZipParameters();
params.setCompressionMethod(Zip4jConstants.COMP_STORE);
params.setIncludeRootFolder(false);
ZipFile output = new ZipFile(new File("out.zip"));
output.addFolder(file, params);
file.delete();
return "Done";
} catch (Exception e) {
e.printStackTrace();
return "Error";
}
那么对于解决这个问题的另一种方法有什么建议吗?或者对我当前的代码进行一些速度或内存优化?
【问题讨论】:
-
所以您是说您想使用 Zip 作为容器格式但不压缩内容,但您担心使用太多存储空间?不清楚你在这里问什么。
-
是的,我有一个压缩的zip文件,我想把它变成容器格式,即去掉压缩。我当前代码的问题在于它将输入提取到一个文件夹中,然后制作一个新的 zip,在执行的某个时间点有 3 个副本,这会消耗大量内存
标签: java android compression zip