虽然我试图在大小为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最大限制在读取文件,因此异常的尺寸达到。