1. Files
Klasse
Für die Arbeit mit Dateien gibt es eine raffinierte Utility-Klasse – java.nio.file.Files
. Es gibt Methoden für jeden Anlass. Alle Methoden dieser Klasse sind statisch und arbeiten mit dem Path-Objekt. Da es viele Methoden gibt, betrachten wir nur die wichtigsten:
Methode | Beschreibung |
---|---|
|
Erstellt eine neue Datei mit dem Pfadpath |
|
Erstellt ein neues Verzeichnis |
|
Erstellt mehrere Verzeichnisse |
|
Erstellt eine temporäre Datei |
|
Erstellt ein temporäres Verzeichnis |
|
Löscht eine Datei oder ein Verzeichnis, wenn es leer ist |
|
Kopiert eine Datei |
|
Verschiebt eine Datei |
|
Prüft, ob der Pfad ein Verzeichnis und keine Datei ist |
|
Prüft, ob der Pfad eine Datei und kein Verzeichnis ist |
|
Überprüft, ob ein Objekt am angegebenen Pfad vorhanden ist |
|
Gibt die Dateigröße zurück |
|
Gibt den gesamten Inhalt einer Datei als Array von Bytes zurück |
|
Gibt den gesamten Inhalt einer Datei als String zurück |
|
Gibt den gesamten Inhalt einer Datei als Liste von Zeichenfolgen zurück |
|
Schreibt ein Array von Bytes in eine Datei |
|
Schreibt einen String in eine Datei |
|
Gibt eine Sammlung von Dateien (und Unterverzeichnissen) aus dem angegebenen Verzeichnis zurück |
2. Dateien und Verzeichnisse erstellen
Dateien und Verzeichnisse lassen sich sehr einfach erstellen. Überzeugen wir uns anhand einiger Beispiele:
Code | Notiz |
---|---|
|
Erstellt eine Datei |
|
Erstellt ein Verzeichnis |
|
Erstellt ein Verzeichnis und alle erforderlichen Unterverzeichnisse, falls diese nicht vorhanden sind. |
3. Kopieren, Verschieben und Löschen
Das Kopieren, Verschieben und Löschen von Dateien ist ebenso einfach. Dies gilt auch für Verzeichnisse, diese müssen jedoch leer sein.
Code | Notiz |
---|---|
|
Kopiert eine Datei |
|
Verschiebt und benennt eine Datei um |
|
Löscht eine Datei |
4. Überprüfen Sie den Typ und die Existenz einer Datei
Wenn Sie einen Pfad von jemand anderem erhalten haben, möchten Sie wissen, ob es sich um eine Datei oder ein Verzeichnis handelt. Und im Allgemeinen: Existiert eine solche Datei/ein solches Verzeichnis oder nicht?
Auch hierfür gibt es spezielle Methoden. Sie können die Länge einer Datei auch ganz einfach herausfinden:
Code | Notiz |
---|---|
|
|
|
|
|
|
|
|
5. Arbeiten mit Dateiinhalten
Schließlich gibt es eine ganze Reihe von Methoden, die es einfach machen, den Inhalt einer Datei zu lesen oder zu schreiben. Beispiel:
Code | Beschreibung |
---|---|
|
Lesen Sie den Inhalt der Datei als Liste von Zeichenfolgen. Zeigen Sie die Zeichenfolgen an |
6. Den Inhalt eines Verzeichnisses abrufen
Die interessanteste Methode bleibt bestehen. Es wird verwendet, um Dateien und Unterverzeichnisse in einem bestimmten Verzeichnis abzurufen.
Wir sprechen von der newDirectoryStream()
Methode, die ein spezielles DirectoryStream<Path>
Objekt zurückgibt. Es verfügt über einen Iterator(!), mit dem Sie alle Dateien und Unterverzeichnisse eines bestimmten Verzeichnisses abrufen können.
Das ist einfacher als es klingt.
Code | Beschreibung |
---|---|
|
Holen Sie sich ein Objekt mit einer Liste von Dateien. Durchlaufen Sie die Liste der Dateien |
Das DirectoryStream<Path>
Objekt hat zwei Eigenschaften. Erstens verfügt es über einen Iterator, der Dateipfade zurückgibt, und wir können dieses Objekt innerhalb einer for-each
Schleife verwenden.
Und zweitens ist dieses Objekt ein Datenstrom und muss daher explizit mit der close()
Methode geschlossen oder als Verwendung innerhalb eines try-with-resources
Blocks deklariert werden.
7. Files.newInputStream
Methode
Ab Java 5 sind die Klassen FileInputStream
und FileOutputStream
veraltet. Einer ihrer Nachteile bestand darin, dass beim Erstellen von Objekten dieser Klassen sofort Dateien auf der Festplatte erstellt werden. Und alle Ausnahmen im Zusammenhang mit der Dateierstellung könnten möglicherweise ausgelöst werden.
Später wurde erkannt, dass dies nicht die beste Entscheidung war. Dementsprechend wird empfohlen, die Methoden der java.nio.Files
Utility-Klasse zum Erstellen von Dateiobjekten zu verwenden.
Hier ist ein Vergleich zwischen dem alten Ansatz und dem neuen Ansatz zum Erstellen von Dateien:
Vor |
---|
|
Nach |
|
Und es gibt einen ähnlichen Ersatz für FileOutputStream
:
Vor |
---|
|
Nach |
|
GO TO FULL VERSION