Java java.nio.file.Files write()-Methode
java.nio.file.Files.write()ist eine statische Methode, die vom Java NIO (New I/O)-Paket bereitgestellt wird, um Daten effizient in Dateien zu schreiben. Sie ist Teil der in Java 7 eingeführten Hilfsklasse für Datei-E/A-OperationenFiles. Im Vergleich zum traditionellenjava.ioPaket bietet es eine prägnantere und effizientere Art des Schreibens.
Methodendefinition
Files.write()Die Methode verfügt über mehrere überladene Versionen für unterschiedliche Schreibanforderungen:
Byte-Array schreiben
Eine iterierbare Sammlung von Strings schreiben
Schreibt eine iterierbare Sammlung von Zeichenketten (unter Verwendung der UTF-8-Kodierung)
Parameterdetails
Grundlegende Parameter
- path: der Dateipfad, in den geschrieben werden soll, vom Typ
java.nio.file.Path - bytes: das zu schreibende Byte-Array
- lines: die zu schreibende Sammlung von Zeichenketten (eine Zeichenkette pro Zeile)
- cs: der Charset, der zur Angabe der Textkodierung verwendet wird
OpenOption-Optionen
OpenOptionDer Parameter wird verwendet, um anzugeben, wie die Datei geöffnet wird. Häufig verwendete Optionen sind:
StandardOpenOption.CREATE: Die Datei erstellen, wenn sie nicht vorhanden istStandardOpenOption.CREATE_NEW: eine neue Datei erstellen, Fehler, falls die Datei bereits vorhanden istStandardOpenOption.WRITE: zum Schreiben öffnenStandardOpenOption.APPEND: anhängen (vorhandenen Inhalt nicht überschreiben)StandardOpenOption.TRUNCATE_EXISTING: die Datei kürzen, falls sie bereits vorhanden ist
Anwendungsbeispiele
Byte-Array schreiben
Beispiel
import java.io.IOException;
public class WriteBytesExample {
public static void main(String[] args) {
Path path = Paths.get("example.bin");
byte[] data = {0x48, 0x65, 0x6C, 0x6C, 0x6F}; // ASCII-Codes von "Hello"
try {
Files.write(path, data, StandardOpenOption.CREATE);
System.out.println(Daten erfolgreich geschrieben);
} catch (IOException e) {
System.err.println(Schreiben fehlgeschlagen: + e.getMessage());
}
}
}
Textzeilen schreiben
Beispiel
import java.io.IOException;
import java.util.Arrays;
import java.nio.charset.StandardCharsets;
public class WriteLinesExample {
public static void main(String[] args) {
Path path = Paths.get("example.txt");
Iterable<String> lines = Arrays.asList(Erste Zeile, Zweite Zeile, Dritte Zeile);
try {
// Schreiben mit UTF-8-Kodierung
Files.write(path, lines, StandardCharsets.UTF_8,
StandardOpenOption.CREATE, StandardOpenOption.APPEND);
System.out.println(Text erfolgreich geschrieben);
} catch (IOException e) {
System.err.println(Schreiben fehlgeschlagen: + e.getMessage());
}
}
}
Methodenmerkmale
Vorteile
- Prägnanz: Im Vergleich zur traditionellen Vorgehensweise
FileOutputStreamundBufferedWriter, ist der Code prägnanter - Atomarität: Der Schreibvorgang ist atomar; er gelingt entweder vollständig oder schlägt vollständig fehl
- Automatisches Schließen: Kein manuelles Schließen des Streams erforderlich; die Methode übernimmt das intern
- Hohe Performance: Die zugrunde liegende Implementierung ist optimiert und leistungsstark
Wichtige Hinweise
- Dateiberechtigungen: Stellen Sie sicher, dass das Programm Schreibberechtigung für die Zieldatei hat
- Dateisperrung: Wenn die Datei von einem anderen Prozess gesperrt ist, schlägt der Schreibvorgang fehl
- Speicherbeschränkungen: Beim Schreiben großer Dateien kann das Laden des gesamten Inhalts auf einmal zu Speichermangel führen
- Kodierungsprobleme: Achten Sie beim Schreiben von Text darauf, den richtigen Zeichensatz anzugeben
Best Practices
Umgang mit großen Dateien
Für große Dateien wird empfohlen,Files.newBufferedWriter()kombiniert mit gepuffertem Schreiben:
Beispiel
for (String line : largeCollection) {
writer.write(line);
writer.newLine();
}
} catch (IOException e) {
// Ausnahme behandeln
}
Fehlerbehandlung
ImmerIOExceptiongeeignete Behandlung durchführen:
Beispiel
Files.write(path, content, StandardOpenOption.CREATE);
} catch (IOException e) {
// Benutzer protokollieren, benachrichtigen oder Wiederherstellungsvorgänge ausführen
logger.error(Dateischreiben fehlgeschlagen: + path, e);
throw new RuntimeException(Datei kann nicht geschrieben werden, e);
}
Zusammenfassung
Files.write()Die Methode ist ein sehr praktisches Hilfsmittel in Java NIO, besonders geeignet für einfache Szenarien zum Schreiben von Dateien. Sie vereinfacht den Code für Dateioperationen, verbessert die Entwicklungseffizienz und behält eine gute Leistung bei. Für komplexere Schreibanforderungen sollten Sie die Verwendung vonFiles.newOutputStream()oderFiles.newBufferedWriter()Methode.
Wählen Sie in der tatsächlichen Entwicklung die geeignete Schreibmethode entsprechend den spezifischen Anforderungen und achten Sie auf Ausnahmebehandlung und Ressourcenverwaltung, um die Robustheit und Zuverlässigkeit des Programms sicherzustellen.
Andere Erweiterungen
Java java.nio.file.Files