雖然我試圖在大小爲144MB的zip文件中以附加模式打開2.2GB的csv文件,我得到以下例外。Java在使用java7打開zipfile文件內的附加模式下打開2.2GB的大文件時出錯NIO
java.lang.IllegalArgumentException: Negative initial size: -2030790440
at java.io.ByteArrayOutputStream.<init>(ByteArrayOutputStream.java:74)
at com.sun.nio.zipfs.ZipFileSystem.getOutputStream(ZipFileSystem.java:1371)
at com.sun.nio.zipfs.ZipFileSystem.newOutputStream(ZipFileSystem.java:516)
at com.sun.nio.zipfs.ZipPath.newOutputStream(ZipPath.java:792)
at com.sun.nio.zipfs.ZipFileSystemProvider.newOutputStream(ZipFileSystemProvider.java:285)
at java.nio.file.Files.newOutputStream(Files.java:170)
at java.nio.file.Files.newBufferedWriter(Files.java:2705)
at
這是我正在使用的代碼片段。
代碼行:
filePath = "/tmp/tmp.zip";
Path path = Paths.get(filePath);
URI uri = URI.create("jar:" + path.toUri());
fs = FileSystems.newFileSystem(uri, env);
Path nf = fs.getPath("detailedreport.csv");
Writer writer = Files.newBufferedWriter(nf, StandardCharsets.UTF_8, StandardOpenOption.APPEND);
注:
文件已經存在
好像BufferWriter的INT最大限制在讀取文件,因此異常的尺寸達到。