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

2022-09-03 16:33:02

我是Java初学者,我需要这样的东西

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

我不知道该怎么做。


答案 1

这里有两个正交概念:

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

因此,最后您需要:

  • 创建一个,它写入您想要结果的任何位置(例如,通过OutputStreamByteArrayOutputStream
  • 将其包装在OutputStreamGZIPOutputStream
  • 使用适当的字符集(例如 UTF-8)将 包装在GZIPOutputStreamOutputStreamWriter
  • 将文本写入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();
 }

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


答案 2

看看GZIPOutputStream - 你应该能够以与任何其他输出流完全相同的方式使用它来写入文件 - 它只会自动以gzip压缩格式写入它。