Die String.format(…)-Methode und prinf(…)-Methoden der Ein-/Ausgabeklassen übernehmen die Aufbereitung nicht selbst, sondern delegieren sie an die Klasse java.util.Formatter. Das ist auch der Grund, warum die Dokumentation für die Formatspezifizierer nicht etwa an String.format(…) hängt, sondern an Formatter.
Konstruktor vom Formatter
Die Klasse Formatter hat eine beeindruckende Anzahl von Konstruktoren:
· Formatter()
· Formatter(Appendable a)
· Formatter(Appendable a, Locale l)
· Formatter(File file)
· Formatter(File file, String csn)
· Formatter(File file, String csn, Locale l)
· Formatter(Locale l)
· Formatter(OutputStream os)
· Formatter(OutputStream os, String csn)
· Formatter(OutputStream os, String csn, Locale l)
· Formatter(PrintStream ps)
· Formatter(String fileName)
· Formatter(String fileName, String csn)
· Formatter(String fileName, String csn, Locale l)
Wird nicht der Standardkonstruktur eingesetzt, schreibt der Formatter in die angegebene Quelle. Daher ist die Klasse schön für das Schreiben von Texten in Dateien geeignet. Formatter implementiert Closeable, ist also auch AutoCloseable. Ein Beispiel zum Schreiben in Dateien:
try ( Formatter out = new Formatter( "ausgabe.txt", StandardCharsets.ISO_8859_1.name() ) ) {
for ( int i = 0; i < 10; i++ )
out.format( "%02d%n", i );
}
catch ( FileNotFoundException | UnsupportedEncodingException e ) {
e.printStackTrace();
}