Здесь есть две ортогональные концепции:
- Преобразование текста в двоичный, обычно с помощью
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
, если все прошло успешно, чтобы очистить все и завершить запись данных.