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 у вас довольно много накладных расходов, если вы открываете новый поток в каждой строке, но он определен для работы таким образом. (Опять же: держать это открытым также помогает в этом).