java:将字符串保存为gzip文件

Lui*_*r15 12 java compression string gzip

我初学java,我需要像这样:

String2GzipFile (String file_content, String file_name)
String2GzipFile("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "lorem.txt.gz")
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何做到这一点.

Jon*_*eet 45

这里有两个正交的概念:

  • 将文本转换为二进制,通常通过 OutputStreamWriter
  • 压缩二进制数据,例如使用 GZIPOutputStream

所以最后你会想:

  • 创建一个OutputStream写入您想要结果的地方(例如文件或通过内存写入内存)ByteArrayOutputStream
  • 包裹OutputStream在一个GZIPOutputStream
  • 包裹GZIPOutputStreamOutputStreamWriter使用适当的字符集(例如UTF-8)
  • 把文字写到 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();
 }
Run Code Online (Sandbox Code Playgroud)

请注意,output即使我们无法创建writer编写器,我也会关闭,但是如果一切都成功,我们仍然需要关闭,以便刷新所有内容并完成数据写入.