Я новичок в Java, мне нужно что-то вроде это:
String2GzipFile (String file_content, String file_name)
String2GzipFile("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "lorem.txt.gz")
Я не могу понять, как это сделать.
Я новичок в Java, мне нужно что-то вроде это:
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
GZIPOutputStream
в OutputStreamWriter
, используя соответствующую кодировку (например, UTF-8)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
, если все прошло успешно, чтобы сбросить все и закончить запись данных.
streamWriter
, иначе вы получите unexpected EOF
при попытке открыть *.gzip
- stackoverflow.com/a/12100352/432903
- person prayagupd; 30.03.2019
Взгляните на GZIPOutputStream. - вы должны иметь возможность использовать это точно так же, как любой другой поток вывода для записи в файл - он просто автоматически запишет его в сжатом формате gzip.
То же решение, что и у Джона, просто использовал попытку с ресурсами
try (FileOutputStream output = new FileOutputStream("filename.gz");
Writer writer = new OutputStreamWriter(new GZIPOutputStream(output), "UTF-8")) {
writer.write("someText");
}
StandardCharsets.UTF_8
вместо "UTF-8"
- person Walter Tross; 02.07.2020