gpt4 book ai didi

java - java ZIP 文件系统中的多个文件 zip 错误

转载 作者:太空宇宙 更新时间:2023-11-04 07:11:31 25 4
gpt4 key购买 nike

我正在尝试使用 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 是您要分配的最大数量(以 MB 为单位,带 M),Xms 是初始数量。您可以将 1024 替换为任何您想要的值,但不要超出计算机上的 RAM。

关于java - java ZIP 文件系统中的多个文件 zip 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20577115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com