Строка для GZIPOutputStream

Я пробовал поиск и ничего не нашел. То, что я пытаюсь сделать, это перебирать список, где я строю строку из комбинации элементов из нескольких списков. Затем я хочу сбросить эти строки в файл с поддержкой gzip. Я заработал, просто сбросив его в простой текстовый файл ascii, но я не могу заставить его работать с gzipoutputstream. Итак, в основном,

Петля  создать строку  dump string в gzipped файл ENDLOOP

Если возможно, я бы хотел избежать сброса в обычный текстовый файл, а затем gzipping его, так как эти файлы будут почти 100 мегаграмм каждый.

Ответ 1

Да, вы можете сделать это без проблем. Вам просто нужно использовать запись для преобразования из строк, основанных на символах, в поток gzip на основе байтов.

    BufferedWriter writer = null;
    try {
        GZIPOutputStream zip = new GZIPOutputStream(
            new FileOutputStream(new File("tmp.zip")));

        writer = new BufferedWriter(
            new OutputStreamWriter(zip, "UTF-8"));

        String[] data = new String[] { "this", "is", "some", 
            "data", "in", "a", "list" };

        for (String line : data) {
            writer.append(line);
            writer.newLine();
        }
    } finally {         
        if (writer != null)
            writer.close();
    }

Кроме того, помните, что gzip просто сжимает поток, если вы хотите вставлять файлы, см. этот пост: архив gzip с несколькими файлами внутри