java:将字符串保存为gzip文件
我是java初学者,我需要这样的东西:
String2GzipFile (String file_content, String file_name) String2GzipFile("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "lorem.txt.gz")
我无法弄清楚如何做到这一点。
这里有两个正交的概念:
- 通常通过
OutputStreamWriter
将文本转换为二进制 - 压缩二进制数据,例如使用
GZIPOutputStream
所以最后你会想:
- 创建一个
OutputStream
,它可以通过ByteArrayOutputStream
写入您想要的结果(例如文件或内存) - 将
OutputStream
包装在GZIPOutputStream
- 使用适当的字符集(例如UTF-8)将
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
,但是如果一切都成功,我们仍需要关闭编写器,以便刷新所有内容并完成数据写入。
看一下GZIPOutputStream – 您应该能够以与任何其他输出流完全相同的方式使用它来写入文件 – 它只是自动以gzip压缩格式编写它。
与Jon一样的解决方案,只是尝试使用资源
try ( FileOutputStream output = new FileOutputStream("filename.gz"); Writer writer = new OutputStreamWriter(new GZIPOutputStream(output), "UTF-8")) { writer.write("someText"); }