# BufferedWriter - Zeile neu anhängen!



## magic_halli (23. Sep 2008)

Hi,

ich möchte bestimmte Werte, die mir eine Funktion ermittelt, zur Übersicht in eine txt-File schreiben. Dazu benutze ich einen BufferedWriter.
Beim erstmaligen Aufruf der Funktion wird das Textfile neu erstellt und ein Wert reingeschrieben.
Beim nächsten Aufruf der Funktion existiert das Textfile ja bereits und es soll einfach eine neue Zeile angehängt werden.
Bsp.:

```
for(int i=0;i<ArrayList.size();i++){
   String s = Array.get(i).toString();
   if( s.equals("meinKriterium") ){
      meineFunktion();
   }else{
       // tue etwas anderes...
   }
}


private void meineFunktion(){
   //hier werden erstmal bestimmte Werte berechnet, die in das Textfile reinsollen
   ...

   File file = new File(sPath + "Textfile.txt");
   if( ! file.exists() ){
      // BufferedWriter initialisieren
      BufferedWriter buff = new BufferedWriter(new FileWriter( sPath + "Textfile.txt" ));
   }else{
      // wie hier syntaktisch mit dem BufferedWriter verfahren, damit ich diesen unten nutzen kann???

   }
   buff.write( "Kaufteil:  " + sNormteilArtikelNr + "   " +  sNormteilName + "\n");
   buff.newLine();
   buff.close();
}
```
Es geht mir eigentlich nur um die Stelle im else-Zweig meiner Funktion... wie muss ich hier (syntaktisch) vorgehen, damit ich, falls das Textfile bereits vorhanden ist, weitere Werte an das existierende File anhängen kann?

Danke und Gruß


----------



## SlaterB (23. Sep 2008)

> new FileWriter( sPath + "Textfile.txt" )

-> 

new FileWriter( sPath + "Textfile.txt", true/ false )


----------



## magic_halli (23. Sep 2008)

SlaterB hat gesagt.:
			
		

> > new FileWriter( sPath + "Textfile.txt" )
> 
> ->
> 
> new FileWriter( sPath + "Textfile.txt", true/ false )



new FileWriter( sPath + "Textfile.txt" ) kommt in den else-Zweig rein??? Was soll das true/false???
Ich versteh Deine Kurzform leider nicht ganz...


----------



## SlaterB (23. Sep 2008)

das true/false sorgt offensichtlich dafür, ob etwas angehängt werden soll oder nicht,
bzw. wäre einen Blick in die API wert, wo alles erkärt ist 

was dann in den else-Fall muss, dürfte klar sein, oder auch ganz ohne if/else:

File file = new File(sPath + "Textfile.txt"); 
// BufferedWriter initialisieren 
BufferedWriter buff = new BufferedWriter(new FileWriter( sPath + "Textfile.txt",file.exists()  ));


----------



## magic_halli (23. Sep 2008)

Cool... ich habs ohne if/else gelöst:

```
File file = new File(sPath + "Textfile.txt");
BufferedWriter buff = new BufferedWriter(new FileWriter( sPath + "Textfile.txt", file.exists() ));
buff.write( "Kaufteil:  " + sNormteilArtikelNr + "   " +  sNormteilName + "\n");
buff.newLine();
buff.close();
```
Diese Schreibweise beim FileWriter hab ich noch nicht gekannt... is ja geil! Danke.  :wink:


----------



## Leroy42 (23. Sep 2008)

SlaterB hat gesagt.:
			
		

> // BufferedWriter initialisieren
> BufferedWriter buff = new BufferedWriter(new FileWriter( sPath + "Textfile.txt", *file.exists()*  ));



Was ist das denn?  :shock: 

Gefällt mir irgendwie!


----------



## SlaterB (23. Sep 2008)

noch besser wäre hier wohl

BufferedWriter buff = new BufferedWriter(new FileWriter( file, file.exists() ));


----------



## musiKk (23. Sep 2008)

Es reicht doch, immer mit true aufzurufen, die Datei wird automatisch angelegt, wenn man das erste mal reinschreibt. Wozu das Gefrickel mit file.exists()?


----------



## SlaterB (23. Sep 2008)

auch wieder wahr


----------

