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"); }