Java java.nio.file.Files write()-Methode

Java File Java java.nio.file.Files


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

public static Path write(Path path, byte[] bytes, OpenOption... options) throws IOException

Eine iterierbare Sammlung von Strings schreiben

public static Path write(Path path, Iterable<? extends CharSequence> lines, Charset cs, OpenOption... options) throws IOException

Schreibt eine iterierbare Sammlung von Zeichenketten (unter Verwendung der UTF-8-Kodierung)

public static Path write(Path path, Iterable<? extends CharSequence> lines, OpenOption... options) throws IOException

Parameterdetails

Grundlegende Parameter

  • path: der Dateipfad, in den geschrieben werden soll, vom Typjava.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 ist
  • StandardOpenOption.CREATE_NEW: eine neue Datei erstellen, Fehler, falls die Datei bereits vorhanden ist
  • StandardOpenOption.WRITE: zum Schreiben öffnen
  • StandardOpenOption.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.nio.file.*;
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.nio.file.*;
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

  1. Prägnanz: Im Vergleich zur traditionellen VorgehensweiseFileOutputStreamundBufferedWriter, ist der Code prägnanter
  2. Atomarität: Der Schreibvorgang ist atomar; er gelingt entweder vollständig oder schlägt vollständig fehl
  3. Automatisches Schließen: Kein manuelles Schließen des Streams erforderlich; die Methode übernimmt das intern
  4. Hohe Performance: Die zugrunde liegende Implementierung ist optimiert und leistungsstark

Wichtige Hinweise

  1. Dateiberechtigungen: Stellen Sie sicher, dass das Programm Schreibberechtigung für die Zieldatei hat
  2. Dateisperrung: Wenn die Datei von einem anderen Prozess gesperrt ist, schlägt der Schreibvorgang fehl
  3. Speicherbeschränkungen: Beim Schreiben großer Dateien kann das Laden des gesamten Inhalts auf einmal zu Speichermangel führen
  4. 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

try (BufferedWriter writer = Files.newBufferedWriter(path, StandardCharsets.UTF_8)) {
    for (String line : largeCollection) {
        writer.write(line);
        writer.newLine();
    }
} catch (IOException e) {
    // Ausnahme behandeln
}

Fehlerbehandlung

ImmerIOExceptiongeeignete Behandlung durchführen:

Beispiel

try {
    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.

Java File Java java.nio.file.Files

Andere Erweiterungen