Tun Sie dies zu Protokollierungszwecken? Wenn ja, gibt es mehrere Bibliotheken für diese . Zwei der beliebtesten sind Log4j y Logback .
Java 7+
Bei einer einmaligen Aufgabe ist die Dateien Klasse macht dies leicht:
try {
Files.write(Paths.get("myfile.txt"), "the text".getBytes(), StandardOpenOption.APPEND);
}catch (IOException e) {
//exception handling left as an exercise for the reader
}
Vorsichtig : Der obige Ansatz führt zu einem NoSuchFileException
wenn die Datei nicht bereits existiert. Es wird auch nicht automatisch ein Zeilenumbruch angehängt (was beim Anhängen an eine Textdatei oft gewünscht wird). Ein anderer Ansatz ist die Übergabe beider CREATE
y APPEND
Optionen, die die Datei zuerst erstellen, wenn sie noch nicht existiert:
private void write(final String s) throws IOException {
Files.writeString(
Path.of(System.getProperty("java.io.tmpdir"), "filename.txt"),
s + System.lineSeparator(),
CREATE, APPEND
);
}
Wenn Sie jedoch viele Male in dieselbe Datei schreiben, müssen die obigen Schnipsel die Datei auf der Festplatte viele Male öffnen und schließen, was ein langsamer Vorgang ist. In diesem Fall sollte ein BufferedWriter
ist schneller:
try(FileWriter fw = new FileWriter("myfile.txt", true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter out = new PrintWriter(bw))
{
out.println("the text");
//more code
out.println("more text");
//more code
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
Notas:
- Der zweite Parameter der
FileWriter
Konstruktor, dass an die Datei angehängt werden soll, anstatt eine neue Datei zu schreiben. (Existiert die Datei nicht, wird sie erstellt.)
- Mit einer
BufferedWriter
wird für einen teuren Schriftsteller empfohlen (z. B. FileWriter
).
- Mit einer
PrintWriter
gibt Ihnen Zugang zu println
Syntax, die Sie wahrscheinlich von System.out
.
- Aber die
BufferedWriter
y PrintWriter
Umhüllungen sind nicht unbedingt erforderlich.
Ältere Java
try {
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("myfile.txt", true)));
out.println("the text");
out.close();
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
Behandlung von Ausnahmen
Wenn Sie eine robuste Ausnahmebehandlung für älteres Java benötigen, wird es sehr langatmig:
FileWriter fw = null;
BufferedWriter bw = null;
PrintWriter out = null;
try {
fw = new FileWriter("myfile.txt", true);
bw = new BufferedWriter(fw);
out = new PrintWriter(bw);
out.println("the text");
out.close();
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
finally {
try {
if(out != null)
out.close();
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
try {
if(bw != null)
bw.close();
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
try {
if(fw != null)
fw.close();
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
}