繁体   English   中英

将zip文件复制到另一个zipfile中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM