© Excellent backgrounds/Shutterstock.com
Java Magazin
Zeitgemäßes Arbeiten mit Dateien

java.nio.file: höher, weiter, schneller

Mit der Version 7 wurde in Java die Art und Weise, Dateien zu verwalten und Dateiinhalte zu bearbeiten, von Grund auf neu implementiert. Zwar existiert auch weiterhin die altbekannte Klasse java.io.File, zusätzlich gibt es nun jedoch im Package java.nio.file ein komplett neues und von java.io.File losgelöstes API zum Zugriff auf das Dateisystem. Ein erster Überblick über dieses neue API und die sich daraus ergebenden neuen Möglichkeiten im Vergleich zu java.io.File.

Christian Robert


Um in Java-Versionen vor Java SE 7 mit Dateien zu arbeiten, muss die Klasse java.io.File genutzt werden. Exemplare dieser Klasse bilden jeweils den Java-Repräsentanten einer Datei im lokalen Dateisystem. Das eigentliche Konzept eines Dateisystems hingegen ist im klassischen java.io.File-API so gut wie unbekannt bzw. für den Entwickler nicht zugänglich. Zwar existiert eine Klasse namens java.io.FileSystem, diese ist jedoch package-private innerhalb von java.io und damit für eine Nutzung durch Clientcode nicht vorgesehen.

Implizit ist mit „Dateisystem“ vor Java SE 7 immer das lokale Dateisystem gemeint. Anders ausgedrückt: Ein java.io.File-Objekt repräsentiert immer eine Datei im lokalen Dateisystem. Eine Möglichkeit, den Dateibegriff abstrakter und weiter zu interpretieren, ist nicht vorgesehen. Ein Dateizugriff auf ein entferntes System (beispielsweise per FTP) lässt sich mit java.io.File nicht realisieren und muss zwangsläufig mit externen Frameworks umgesetzt werden.

Java SE 7 hingegen macht mit java.nio.file.FileSystem das Konzept eines Dateisystems auch für den Entwickler explizit verfügbar. Das lokale Dateisystem ist nur eine mögliche Implementierung; beliebige andere lassen sich vom Entwickler jederzeit dem System bekannt machen und nutzen.

Es bietet sich damit eine ganz neue Möglichkeit, Abstraktionen zur Speicherung von Inhalten zu entwickeln und zu nutzen, da nicht mehr auf jeder Ebene zwischen interner Speicherung (auf dem lokalen Dateisystem) und externer Speicherung (auf einem Ziel außerhalb des lokalen Dateisystems) unterschieden werden muss.

Zugegeben: Wirklich revolutionär ist diese Idee nicht   – Frameworks wie Apache Commons VFS bieten eine entsprechende Abstraktion bereits seit einigen Jahren an. Mit java.nio.file bietet sich jedoch erstmals die Möglichkeit, dies direkt mit Java-Bordmitteln zu lösen.

Path

Das Pendant zu java.io.File im java.nio.file Package stellt das Interface java.nio.file.Path dar. Im Gegensatz zu File stellt jedoch Path zunächst keinen direkten Zugriff auf die Inhalte (bzw. Metadaten) einer Datei bereit, sondern enthält lediglich Informationen zur Lokalisierung der eigentlichen Datei im Dateisystem.

FileSystemProvider

Wie bereits erwähnt, bietet java.nio.file eine komplette und offene Verwaltung für Dateisysteme. Einstiegspunkt ist hierbei die Klasse FileSystemProvider. Implementierungen dieser Klasse sind für die tatsächliche Ausführung der I/O-Operationen auf Dateien, die durch Path-Objekte eindeutig identifiziert werde...

Java Magazin
Zeitgemäßes Arbeiten mit Dateien

java.nio.file: höher, weiter, schneller

Mit der Version 7 wurde in Java die Art und Weise, Dateien zu verwalten und Dateiinhalte zu bearbeiten, von Grund auf neu implementiert. Zwar existiert auch weiterhin die altbekannte Klasse java.io.File, zusätzlich gibt es nun jedoch im Package java.nio.file ein komplett neues und von java.io.File losgelöstes API zum Zugriff auf das Dateisystem. Ein erster Überblick über dieses neue API und die sich daraus ergebenden neuen Möglichkeiten im Vergleich zu java.io.File.

Christian Robert


Um in Java-Versionen vor Java SE 7 mit Dateien zu arbeiten, muss die Klasse java.io.File genutzt werden. Exemplare dieser Klasse bilden jeweils den Java-Repräsentanten einer Datei im lokalen Dateisystem. Das eigentliche Konzept eines Dateisystems hingegen ist im klassischen java.io.File-API so gut wie unbekannt bzw. für den Entwickler nicht zugänglich. Zwar existiert eine Klasse namens java.io.FileSystem, diese ist jedoch package-private innerhalb von java.io und damit für eine Nutzung durch Clientcode nicht vorgesehen.

Implizit ist mit „Dateisystem“ vor Java SE 7 immer das lokale Dateisystem gemeint. Anders ausgedrückt: Ein java.io.File-Objekt repräsentiert immer eine Datei im lokalen Dateisystem. Eine Möglichkeit, den Dateibegriff abstrakter und weiter zu interpretieren, ist nicht vorgesehen. Ein Dateizugriff auf ein entferntes System (beispielsweise per FTP) lässt sich mit java.io.File nicht realisieren und muss zwangsläufig mit externen Frameworks umgesetzt werden.

Java SE 7 hingegen macht mit java.nio.file.FileSystem das Konzept eines Dateisystems auch für den Entwickler explizit verfügbar. Das lokale Dateisystem ist nur eine mögliche Implementierung; beliebige andere lassen sich vom Entwickler jederzeit dem System bekannt machen und nutzen.

Es bietet sich damit eine ganz neue Möglichkeit, Abstraktionen zur Speicherung von Inhalten zu entwickeln und zu nutzen, da nicht mehr auf jeder Ebene zwischen interner Speicherung (auf dem lokalen Dateisystem) und externer Speicherung (auf einem Ziel außerhalb des lokalen Dateisystems) unterschieden werden muss.

Zugegeben: Wirklich revolutionär ist diese Idee nicht   – Frameworks wie Apache Commons VFS bieten eine entsprechende Abstraktion bereits seit einigen Jahren an. Mit java.nio.file bietet sich jedoch erstmals die Möglichkeit, dies direkt mit Java-Bordmitteln zu lösen.

Path

Das Pendant zu java.io.File im java.nio.file Package stellt das Interface java.nio.file.Path dar. Im Gegensatz zu File stellt jedoch Path zunächst keinen direkten Zugriff auf die Inhalte (bzw. Metadaten) einer Datei bereit, sondern enthält lediglich Informationen zur Lokalisierung der eigentlichen Datei im Dateisystem.

FileSystemProvider

Wie bereits erwähnt, bietet java.nio.file eine komplette und offene Verwaltung für Dateisysteme. Einstiegspunkt ist hierbei die Klasse FileSystemProvider. Implementierungen dieser Klasse sind für die tatsächliche Ausführung der I/O-Operationen auf Dateien, die durch Path-Objekte eindeutig identifiziert werde...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang