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

时间:2011-05-13 16:05:38

标签: java string gzip compression

我是java初学者,我需要像this这样的东西:

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

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

3 个答案:

答案 0 :(得分:45)

这里有两个正交的概念:

  • 通常通过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,以便刷新所有内容并完成数据写入。

答案 1 :(得分:3)

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

答案 2 :(得分:0)

与Jon相同的解决方案,只是尝试使用资源

  try (   FileOutputStream output = new FileOutputStream("filename.gz");
                Writer writer = new OutputStreamWriter(new GZIPOutputStream(output), "UTF-8")) {

            writer.write("someText");


        }