„Oh, Rishi! Hallo!“

„Hallo, Amigo! Wie ist das Leben?“

„Großartig. Bilaabo hat mir gerade eine Menge interessanter Dinge über File erzählt und wie man damit arbeitet.“

„Zufällig denke ich, dass ich zu diesem Thema noch etwas hinzufügen kann.“

„Wirklich? Dann bin ich ganz Ohr.“

„Okay, hören Sie zu. Java entwickelt sich ständig weiter. Seine Entwickler suchen ständig nach neuen Möglichkeiten, verschiedene Dinge effizienter zu erledigen. In Java 7 haben sie eine Alternative zur File-Klasse hinzugefügt.“

Dateien, Pfad – 1

"Alternative?"

„Ja. Sie haben die File- Klasse als Basis genommen, ein paar neue Dinge hinzugefügt, die Methoden umbenannt und sie dann auch in zwei Teile geteilt. Jetzt gibt es also zwei neue Klassen: Path und FilesPath ist eigentlich das neue Analogon von File Klasse, und File ist eine Utility-Klasse (analog zu den Arrays- und Collections-Klassen). Alle statischen Methoden der File-Klasse gehen dorthin. Diese Vorgehensweise ist im Hinblick auf OOP „korrekter“.

„Nun, wenn es um OOP geht, dann okay. Was hat sich also geändert?“

„Zuerst haben sie beschlossen, die Methoden, die  String-  und File -Objekte zurückgegeben haben, nicht zu reproduzieren. In der Path-  Klasse geben alle Methoden einen Path zurück .

„Zweitens haben sie viele statische Dienstprogrammmethoden in die Files- Klasse verschoben.“

„Drittens wurde es bequemer, mit relativen Pfaden zu arbeiten.“

„Hier ist eine Liste der Methoden:“

Methoden der Path-Klasse Beschreibung
boolean isAbsolute() Gibt true zurück, wenn der Pfad absolut ist.
Path getRoot() Gibt das Stammverzeichnis des aktuellen Pfads zurück, also das oberste Verzeichnis.
Path getFileName() Gibt den Dateinamen aus dem aktuellen Pfad zurück.
Path getParent() Gibt das Verzeichnis vom aktuellen Pfad zurück.
boolean startsWith(Path other) Prüft, ob der aktuelle Pfad mit dem übergebenen Pfad beginnt.
boolean endsWith(Path other) Prüft, ob der aktuelle Pfad mit dem übergebenen Pfad endet.
Path normalize() Normalisiert den aktuellen Pfad. Konvertiert beispielsweise „c:/dir/dir2/../a.txt“ in „c:/dir/a.txt“.
Path relativize(Path other) Berechnet den relativen Weg zweier Wege, also „die Differenz zwischen den Wegen“
Path resolve(String other) Löst einen absoluten Pfad unter Verwendung des aktuellen und des relativen Pfads auf.
URI toUri() Gibt den URI zurück, wenn es sich um den aktuellen Pfad/die aktuelle Datei handelt.
Path toAbsolutePath() Konvertiert den Pfad in einen absoluten Pfad, wenn er relativ ist.
File toFile() Gibt ein File-Objekt zurück, das dem aktuellen Path-Objekt entspricht.

„Und der aktuelle Pfad – was ist das?“

„Dies ist der Pfad, der an den Konstruktor des Path-Objekts übergeben wurde, dessen Methoden aufgerufen werden.“

„OK. Welche Methoden hat die Files- Klasse?“

„Haben Sie es eilig, irgendwohin zu kommen? Ich sage es Ihnen gleich. Hier sind die wichtigsten Methoden:“

Methoden der Files-Klasse Beschreibung
Path createFile(…) Erstellt eine Datei auf der Festplatte.
Path createDirectory(…) Erstellt ein Verzeichnis.
Path createDirectories(…) Erstellt ein Verzeichnis und alle seine Unterverzeichnisse.
Path createTempFile(…) Erstellt eine temporäre Datei.
Path createTempDirectory(…) Erstellt ein temporäres Verzeichnis.
void delete(Path path) Löscht eine Datei.
Path copy(Path source, Path target,…) Kopiert eine Datei.
Path move(Path source, Path target,…) Verschiebt eine Datei.
boolean isSameFile(Path, Path) Vergleicht zwei Dateien.
boolean isDirectory(Path) Ist der Pfad ein Verzeichnis?
boolean isRegularFile(Path) Ist der Pfad eine Datei?
long size(Path) Gibt die Dateigröße zurück.
boolean exists(Path) Existiert ein Objekt mit demselben Namen?
boolean notExists(Path) Existiert kein Objekt mit demselben Namen?
long copy(InputStream, OutputStream) Kopiert Bytes vom InputStream in den OutputStream.
long copy(Path, OutputStream) Kopiert alle Bytes vom Pfad in den OutputStream.
long copy(InputStream, Path) Kopiert alle Bytes vom InputStream in den Pfad.
byte[] read(InputStream, int initialSize) Liest ein Array von Bytes aus dem InputStream.
byte[] readAllBytes(Path path) Liest alle Bytes aus dem InputStream.
List<String> readAllLines(Path path,..) Liest die Textdatei und gibt eine Liste von Zeichenfolgen zurück.
Path write(Path path, byte[] bytes,…) Schreibt ein Array von Bytes in eine Datei.

„Wie interessant! So viele coole Funktionen und alles an einem Ort.“

„Schau mal. Angenommen, Sie möchten eine Datei aus dem Internet herunterladen und sie dann an jemanden senden. Dazu ist es sehr praktisch, eine temporäre Datei auf der Festplatte zu erstellen und die gelesenen Daten darauf zu speichern.“

„Ist es schwierig, eine Datei aus dem Internet herunterzuladen?“

„Es ist ganz einfach. Schauen Sie sich dieses Beispiel an:“

Code
URL url = new URL("https://www.google.com.ua/images/srpr/logo11w.png");
InputStream inputStream = url.openStream();

Path tempFile = Files.createTempFile("temp-",".tmp");
Files.copy(inputStream, tempFile);

"Und das ist es?"

„Ja, was hast du erwartet? Es gibt nur 4 Zeilen.“

" Zeile 1.  Erstellt ein URL-Objekt, an das die URL der Bilddatei übergeben wird.

" Zeile 2.  Ein Stream zum Lesen einer Datei (InputStream) wird auf dem URL-Objekt geöffnet.

" Zeile 3.  Die createTempFileMethode wird zum Erstellen einer temporären Datei verwendet.

Zeile 4.  Die Methode Files.copy kopiert Daten von  inputStream nach tempFile. Das ist alles.“

"Genial!"

„Großartig. Ich freue mich, dass es dir gefällt. Ich denke, dass du den Rest der Methoden selbst herausfinden kannst. Und ich werde Diego bitten, dir mehrere Aufgaben dazu zu geben.“

„Übrigens, hier ist ein guter Link zu diesem Material“