繁体   English   中英

Java ZIP FileSystem中的多个文件zip错误

[英]Multiple files zip error in java ZIP FileSystem

我正在尝试使用java FileSystem压缩目录内的文件。 当文件很少时,它可以正常工作,但是当文件数量超过100时,它会失败。

这是我在程序中使用的代码:

Map<String, String> env = new HashMap<>();
env.put("create", "true");
URI uri = URI.create("jar:file://10.0.8.31/Shared/testFile.zip");
long bytesRead = 0;
File dir = new File("D:\\Shared\\DPXSequence");

try (FileSystem zipfs = FileSystems.newFileSystem(uri, env)) {
    for (File sourceF : dir.listFiles()) {
        Path externalFile = Paths.get(sourceF.getAbsolutePath());
        Path pathInZipfile = zipfs.getPath("/" + sourceF.getName());

        // copy a file into the zip file
        Files.copy(externalFile, pathInZipfile, StandardCopyOption.REPLACE_EXISTING);
    }
}
catch(Exception e) {
    System.out.println("Error : "+e.toString());
}

这是我得到的错误:

Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space

我在哪里做错了? 我认为Files.copy()执行在实际压缩并复制到目标文件夹之前已经完成。 那是问题所在吗?

您尝试复制的文件太大,或者由于任何原因未激活System.gc()并清除使用的内存。

因此,请检查以下内容:

在方法中的files.copy之后输入[System.gc();]

要么

运行分配了更多内存的Java程序:

java -Xmx1024M -Xms1024M -jar jarName.jar(如果是jar)Xmx是要分配的最大数量(以M为单位的MB),而Xms是初始数量。 您可以将1024替换为您想要的任何大小,只要不超过计算机的RAM。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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