我想壓縮文件內使用java FileSystem目錄。當只有很少的文件時工作正常,但當超過100個文件時失敗。在ZIP中的多個文件zip錯誤ZIP文件系統
這是我在程序中使用的代碼:
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()
執行完成之前,它實際上壓縮並複製到目標文件夾。這是造成這個問題嗎?
也許這個[回覆](http://stackoverflow.com/a/23861949/2287893)by @ diego-giagio回答有助於克服OOM。 – MZerau