Java java.nio.file.Files createDirectories()Methode

Java File Java java.nio.file.Files


java.nio.file.Files.createDirectories()ist eine Hilfsmethode, die im Java-NIO-Paket (New I/O) zum Erstellen mehrstufiger Verzeichnisstrukturen bereitgestellt wird. Anders alscreateDirectory()die Methode ist anders,createDirectories()sie erstellt automatisch alle nicht existierenden übergeordneten Verzeichnisse im Pfad.

Methodendefinition

public static Path createDirectories(Path dir, FileAttribute<?>... attrs) throws IOException

Parameterbeschreibung

Path dir

  • Der zu erstellende Verzeichnispfad
  • Typ:java.nio.file.Path
  • Darf nicht null sein

FileAttribute<?>... attrs (optional)

  • Optionale Parameter zum Festlegen von Verzeichnisattributen
  • Typ: varargsFileAttribute<?>
  • Kann Attribute wie Dateiberechtigungen, Besitzer usw. angeben.

Rückgabewert

  • Gibt das erstellte Verzeichnis zurückPathObjekt
  • Wenn das Verzeichnis bereits existiert, wird das Verzeichnis zurückgegebenPathObjekt

Ausnahmebehandlung

IOException

  • Wird ausgelöst, wenn das Verzeichnis nicht erstellt werden kann
  • Häufige Ursachen:
    • Unzureichende Berechtigungen
    • Dateisystem ist voll
    • Ein Name im Pfad ist eine vorhandene Datei und kein Verzeichnis

FileAlreadyExistsException

  • Wird ausgelöst, wenn ein Name im Pfad eine vorhandene Datei und kein Verzeichnis ist

SecurityException

  • Wird ausgelöst, wenn der Sicherheitsmanager den Zugriff verweigert

Anwendungsbeispiele

Grundlegende Verwendung

Beispiel

import java.nio.file.*;

public class CreateDirectoriesExample {
    public static void main(String[] args) {
        Path path = Paths.get("C:/test/demo/example");
       
        try {
            Files.createDirectories(path);
            System.out.println("Verzeichnis erfolgreich erstellt: " + path);
        } catch (IOException e) {
            System.err.println("Verzeichniserstellung fehlgeschlagen: " + e.getMessage());
        }
    }
}

Verwendung mit Dateiattributen

Beispiel

import java.nio.file.*;
import java.nio.file.attribute.*;

public class CreateDirectoriesWithAttributes {
    public static void main(String[] args) {
        Path path = Paths.get("C:/test/demo/example");
        FileAttribute<Set<PosixFilePermission>> attrs =
            PosixFilePermissions.asFileAttribute(
                PosixFilePermissions.fromString("rwxr-x---"));
       
        try {
            Files.createDirectories(path, attrs);
            System.out.println("Verzeichnis mit Berechtigungen erfolgreich erstellt: " + path);
        } catch (IOException e) {
            System.err.println("Verzeichniserstellung fehlgeschlagen: " + e.getMessage());
        }
    }
}

Hinweise

  1. Atomare Operation:createDirectories()Ist eine atomare Operation; sie erstellt entweder alle erforderlichen Verzeichnisse oder gar keine.

  2. Vorhandenes Verzeichnis: Wenn das Verzeichnis bereits existiert, kehrt die Methode normal zurück, ohne eine Ausnahme auszulösen.

  3. Symbolische Links: Wenn der Pfad symbolische Links enthält, löst die Methode diese Links auf und ermittelt die tatsächlichen Verzeichnisse.

  4. Leistungsaspekte: Im Vergleich zu mehreren AufrufencreateDirectory(),createDirectories()es ist effizienter, weil es die Anzahl der Dateisystemprüfungen reduziert.


undcreateDirectory()Unterschied

Merkmal createDirectories() createDirectory()
Mehrstufige Verzeichnisse erstellen Unterstützt Nicht unterstützt
Verhalten, wenn das übergeordnete Verzeichnis nicht existiert Übergeordnete Verzeichnisse automatisch erstellen Löst NoSuchFileException aus
Atomarität Ja Ja
Umgang mit vorhandenem Verzeichnis Kehrt normal zurück Löst FileAlreadyExistsException aus

Best Practices

  1. Fehlerbehandlung: Behandeln Sie immer die möglicherweise ausgelösten Ausnahmen.IOException。

  2. Berechtigungsprüfungen: Prüfen Sie vor dem Aufruf, ob ausreichende Berechtigungen vorhanden sind.

  3. Pfadvalidierung: Stellen Sie sicher, dass das Pfadformat korrekt ist und keine unzulässigen Zeichen enthält.

  4. Ressourcenbereinigung: Wenn die Erstellung fehlschlägt, sollten Sie die Bereinigung teilweise erstellter Verzeichnisse in Betracht ziehen.


FAQ

F: Was ist, wenn einige Verzeichnisse im Pfad bereits existieren?

A: Die Methode überspringt vorhandene Verzeichnisse und erstellt nur die nicht vorhandenen Teile.

F: Wird diese Methode vorhandene Dateien überschreiben?

A: Nein. Wenn ein Name im Pfad eine vorhandene Datei und kein Verzeichnis ist, wirft die Methode eine Ausnahme.FileAlreadyExistsException。

F: Verhält sich diese Methode unter Windows und Linux unterschiedlich?

A: Das grundlegende Verhalten ist dasselbe, aber die Art und Weise, wie Dateiattribute (z. B. Berechtigungen) festgelegt werden, kann je nach Betriebssystem variieren.


Zusammenfassung

Files.createDirectories()Ist eine sehr praktische Methode in Java NIO, besonders geeignet für Szenarien, in denen mehrstufige Verzeichnisstrukturen erstellt werden müssen. Sie vereinfacht den Prozess der Verzeichniserstellung, bietet atomare Operationen und verfügt über einen guten Fehlerbehandlungsmechanismus. Die Beherrschung dieser Methode kann die Effizienz und Zuverlässigkeit von Dateisystemoperationen erheblich verbessern.

Java File Java java.nio.file.Files

Andere Erweiterungen