这是我的代码:
WritableByteChannel channel = null;
GZIPOutputStream out = null;
try {
channel = Channels.newChannel(new FileOutputStream("C:\\temp\\111.zip"));
out = new GZIPOutputStream(Channels.newOutputStream(channel));
for (long i = 0; i < 10000000000; i++) {
out.write(("string" + i + "\n").getBytes());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (channel != null) {
channel.close();
}
} catch (Exception e) {
}
try {
if (out != null) {
out.close();
}
} catch (Exception e) {
}
} }
我得到了 zip,但它的内容已损坏。
最佳答案
我会这样做:
GZIPOutputStream gzipOS = new GZIPOutputStream(new FileOutputStream("C:\\temp\\111.gz"));
WritableByteChannel out = Channels.newChannel(gzipOS);
并且只需使用out.write()
即可使用NIO进行写入。不要忘记稍后关闭资源。
关于java - 使用nio写入GZIP文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9394098/