我是Java初学者,我需要类似this的内容:

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,但是如果一切成功,我们仍然需要关闭writer,以便刷新所有内容并完成数据写入。

    10-04 17:48