Input/Output Beste Möglichkeit einen String in einen Datei zu Schreiben

Hallo zusammen,
Ich programmieren jetzt schon ein paar Jahre in Java und habe zum Abspeichern von Daten immer einen FileWriter + BufferedWriter benützt. Allerdings wollte ich mal fragen was den die beste Möglichkeit ist etwas in einen Datei zu Schreiben, da gibt es ja viele Möglichleiten:
-FIleWriter + einige erweiterte Weitere (StringWriter, BufferedWriter, etc.)
-FileOutputStream + erweitert (DataOutputStream, Buffered Outputstream, etc.)
-Printer (Printwriter, etc.)
-Formatter (aus java.util)
-und bestimmt noch andere Möglichkeiten.

Ich weiß außerdem das man Objecte mittels eines ObjectOutputStreams Serialisieren kann, will aber am besten etwas Menschen lesbares schreiben (einen String in eine Datei).

Und wenn wir grade dabei sind, gibt es auch einen dafür am passende Methode diesen wieder einzulesen?

Vielen Dank im Vorraus!
 
Nachdem ich mir alle mal angeschauen hab muss ich sagen das mur der PrintWriter ganz gut gefällt, da man ihn direkt auf die Datei aufrufen kann und er nützliche Methoden wie Println () hat, aber ob das jetzt die beste Lösung ist und wo z.b. der genaue Unterschied zu PrintStream ist, habe ich keinen Ahnung.
 
Zuletzt bearbeitet:
Welchen Stream oder Reader/Writer man benutzt ist oft Geschmackssache. Den PrintWriter mag ich z.B. nicht, da er keine Exceptions wirft wenn das Schreiben nicht funktioniert hat.

Die read und write Methoden aus der Klasse java.nio.file.Files sind auch oft sehr nützlich. Hier sollte man allerdings beachten, dass der gesamte Inhalt einmal in den Arbeitsspeicher geladen wird.

Wenn du etwas in einem lesbaren Format speichern willst bietet sich JSON an. Es gibt einige Bibliotheken dafür (z.B. Jackson). Damit können Java-Objekte mit einem Einzeiler gelesen oder geschrieben werden. Beispiel:
Java:
Map<Integer,String> map = ...
ObjectMapper mapper = new ObjectMapper();
mapper.write(new File("C:\\test.txt"), map);
Das funktioniert auch mit komplexeren Klassen als Maps und ist gut lesbar.
 

Zurück
Oben