java: save string as gzip file
Have a look at GZIPOutputStream - you should be able to use this in exactly the same way as any other outputstream to write to a file - it'll just automatically write it in the gzip compressed format.
There are two orthogonal concepts here:
- Converting text to binary, typically through an
OutputStreamWriter
- Compressing the binary data, e.g. using
GZIPOutputStream
So in the end you'll want to:
- Create an
OutputStream
which writes to wherever you want the result (e.g. a file or in memory via aByteArrayOutputStream
- Wrap that
OutputStream
in aGZIPOutputStream
- Wrap the
GZIPOutputStream
in anOutputStreamWriter
using an appropriate charset (e.g. UTF-8) - Write the text to the
OutputStreamWriter
- Close the writer, which will flush and close everything else.
For example:
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();
}
Note that I'm closing output
even if we fail to create the writer, but we still need to close writer
if everything is successful, in order to flush everything and finish writing the data.
Same solution as Jon, just used try with resources
try (FileOutputStream output = new FileOutputStream("filename.gz");
Writer writer = new OutputStreamWriter(new GZIPOutputStream(output), "UTF-8")) {
writer.write("someText");
}