Como escrever dados com FileOutputStream sem perder dados antigos?

86

Se você trabalha com FileOutputStreammétodos, cada vez que grava seu arquivo por meio desses métodos, você perde seus dados antigos. É possível gravar arquivo sem perder seus dados antigos via FileOutputStream?

iSun
fonte
1
Se você está se perguntando como poderia resolver isso sozinho, você pode ter lido o Javadoc. docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html
Peter Lawrey
[OutputStreamWriter é usado em vez de FileOutputStream] [1] [1]: stackoverflow.com/questions/23320070/…
sourabh
1
@PeterLawrey para aprender por nós mesmos, geralmente basta pedir internet. E SO é o primeiro resultado antes do documento java :-)
Juh_

Respostas:

150

Use o construtor que leva a Filee aboolean

FileOutputStream(File file, boolean append) 

e defina o booleano como true. Dessa forma, os dados que você grava serão anexados ao final do arquivo, em vez de sobrescrever o que já estava lá.

Esteira
fonte
20

Use o construtor para anexar material ao arquivo:

FileOutputStream(File file, boolean append)
Creates a file output stream to write to the file represented by the specified File object.

Então, para anexar a um arquivo, diga "abc.txt", use

FileOutputStream fos=new FileOutputStream(new File("abc.txt"),true);
o_o
fonte