我是java初学者,我需要像this这样的东西:
String2GzipFile (String file_content, String file_name)
String2GzipFile("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "lorem.txt.gz")
我无法弄清楚如何做到这一点。
答案 0 :(得分:45)
这里有两个正交的概念:
OutputStreamWriter
GZIPOutputStream
所以最后你会想:
OutputStream
,通过ByteArrayOutputStream
OutputStream
GZIPOutputStream
GZIPOutputStream
包裹在OutputStreamWriter
中OutputStreamWriter
例如:
FileOutputStream output = new FileOutputStream(fileName);
try {
Writer writer = new OutputStreamWriter(new GZIPOutputStream(output), "UTF-8");
try {
writer.write(text);
} finally {
writer.close();
}
} finally {
output.close();
}
请注意,即使我们无法创建编写器,我也会关闭output
,但如果一切都成功,我们仍然需要关闭writer
,以便刷新所有内容并完成数据写入。
答案 1 :(得分:3)
看一下GZIPOutputStream - 您应该能够以与任何其他输出流完全相同的方式使用它来写入文件 - 它只会自动以gzip压缩格式编写它。
答案 2 :(得分:0)
与Jon相同的解决方案,只是尝试使用资源
try ( FileOutputStream output = new FileOutputStream("filename.gz");
Writer writer = new OutputStreamWriter(new GZIPOutputStream(output), "UTF-8")) {
writer.write("someText");
}