BufferedOutputStream несколько строк Записать в файл

У меня есть небольшая проблема с функцией, которую я сделал. Я хочу, чтобы каждый раз, когда я давал строку этой функции, она сохраняла меня в новую строку в том же файле, но на самом деле сейчас сохраняется только последняя строка, которую я передаю. Это как переписывать снова и снова, Нужна помощь

public void WritingGZFile(String directory, String linesWithPattern, String newFile) throws IOException
    {
        newFile = directory + '\\' + newFile;
            BufferedOutputStream out = new BufferedOutputStream(new GZIPOutputStream(new FileOutputStream(
                    newFile)));
            out.write(linesWithPattern.getBytes());
            out.write("\r\n".getBytes());
            out.close();
    }

Например, в BufferedWriter есть метод с именем newLine, который помогает сделать это.

Но так как я хочу использовать класс GZIPOutputStream, мне нужен BufferedOutputStream.

Любые идеи, как это сделать? Спасибо

1 ответ

Решение

Вы совершенно правы, вы перезаписываете файл. Если вы откроете его с FileOutputStream это начнется с самого начала. Вы можете оставить поток открытым или использовать режим добавления, указав true после файла (имя).

BufferedOutputStream out = new BufferedOutputStream(
                                 new GZIPOutputStream(
                                       new FileOutputStream(newFile, true)
                                     )
                                );

С GZIPOutputStream у вас довольно много накладных расходов, если вы открываете новый поток в каждой строке, но он определен для работы таким образом. (Опять же: держать это открытым также помогает в этом).

Другие вопросы по тегам