I'm java beginner, I need something like this:
String2GzipFile (String file_content, String file_name)
String2GzipFile("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "lorem.txt.gz")
I cant figure out how to do that.
解决方案
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 a ByteArrayOutputStream
Wrap that OutputStream in a GZIPOutputStream
Wrap the GZIPOutputStream in an OutputStreamWriter 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.