![](/img/trans.png)
[英]How to read data in one zip file located in another zipfile using ZipEntry?
[英]To copy zip file into another zipfile
当前我正在使用下面的代码在另一个zip文件中复制zip文件。但是当zip文件大小增加时:例如2GB,程序抛出内存不足错误。我将xmx增加到1024,仍然存在问题。处理大文件?
public static void zipFile(File srcFile, File zipFile)
throws FileNotFoundException, IOException {
BufferedInputStream origin = null;
FileOutputStream dest = new FileOutputStream(zipFile);
ZipOutputStream out = new ZipOutputStream(
new BufferedOutputStream(dest));
// out.setMethod(ZipOutputStream.DEFLATED);
byte data[] = new byte[BUFFER];
FileInputStream fi = new FileInputStream(srcFile);
origin = new BufferedInputStream(fi, BUFFER);
ZipEntry entry = new ZipEntry(srcFile.getName());
out.putNextEntry(entry);
int count;
while ((count = origin.read(data, 0, BUFFER)) != -1) {
out.write(data, 0, count);
}
origin.close();
out.close();
}
您可以尝试FileChannel.transferTo
方法吗? 效率更高。 由于这是在操作系统级别完成的,因此我假设它不应该依赖于Java堆大小。
如果那也失败,请看这个问题 。
您只需要复制字节就可以了。 您无需将任何一个文件作为Zip文件进行处理。 只需复制字节。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.