Wie finde ich den richtigen Speicherort oder Pfad?

Ein Dateipfad gibt den eindeutigen Speicherort eines Verzeichnisses oder einer Datei durch die hierarchische Auflistung der Elternverzeichnisse in einem Dateisystem an.

Absolute und relative Pfade

Ein Pfad kann auf zweierlei Weisen angegeben werden:

  • Absolute Pfade verzeichnen den Weg zu einer Datei oder einem Verzeichnis ausgehend vom Wurzelverzeichnis des Betriebssystems. Das Wurzelverzeichnis in unixoiden Betriebssystemen ist '/', unter Windows ist dies der Laufwerksbuchstabe.
  • Relative Pfade geben den Weg zu einer Datei oder einem Verzeichnis an ausgehend von der Position eines Bezugspunktes innerhalb des Dateisytems.

Im Folgenden soll die Referenzierung von Dateien und Verzeichnissen über Pfade demonstriert werden, ohne dass an dieser Stelle auf die verschiedenen Verwendungszwecke eingegangen wird.

Wie finde ich den richtigen Speicherort oder Pfad?
Die nebenstehende Abbildung zeigt den Inhalt eines Verzeichnisses in einem unixoiden Dateisystem (Mac OSX), wie es auch für z.B. Linux oder BSD-Derivate zutrifft. Auf oberster Ebene liegen hier drei Verzeichnisse und eine Datei parallel zueinander: img, META-INF, src und TODO.txt, wobei src weitere Unterverzeichnisse enthält, in dessen unterstem, test, sich die Datei Test.java befindet.

Absolute Pfadangaben

Nehmen wir an, das Verzeichnis, dessen gesamter Inhalt in der Abbildung dargestellt ist, trüge den Namen beispiel und läge im Heimatverzeichnis des Users marc unter /Users/marc. Der absolute Pfad zur Datei Test.java würde in diesem Fall lauten:

/Users/marc/beispiel/src/de/javabeginners/test/Test.java

Der Pfad setzt sich somit aus einer von links nach rechts laufenden ununterbrochenen Reihe von Verzeichnisnamen ausgehend vom Wurzelverzeichnis des Rechners ('/') zusammen. Auf diese Weise verweist ein absoluter Pfad eindeutig auf das jeweilige Verweisziel. Zur Separierung der einzelnen Verzeichnisnamen wird der systemeigene Dateitrenner verwendet, hier ebenfalls ('/').

Befände sich das Verzeichnis beispiel auf einem Windows-Rechner, direkt im Wurzelverzeichnis des Laufwerks C:, so ergäbe sich auf Grund des anderen Dateitrenners ('\') der folgende absolute Pfad:

C:\beispiel\src\de\javabeginners\test\Test.java

Relative Pfadangaben

Eine relative Pfadangabe gibt den Weg zu einer Datei oder zu einem Verzeichnis nicht ausgehend vom Wurzelverzeichnis des Systems an, sondern ausgehend von einem Bezugspunkt, d.h. einer anderen Datei oder einem anderen Verzeichnis.
Liegt eine zu referenzierende Datei dabei weiter unten in der Hierarchie des Dateisystems, so wird für einen relativen Pfad einfach die Verzeichnisstruktur ausgehend von der referenzierenden Datei aus notiert. Soll z.B. in Utils.java eine Referenz auf Test.java erfolgen, so lautet der relative Pfad ausgehend von Utils.java zu Test.java:

test/Test.java

Erklärung:
Das Verzeichnis test und die Datei Utils.java liegen auf gleicher Ebene parallel zueinander im Verzeichnis javabeginners. Um zu Test.java zu gelangen, muss somit ausgehend von Utils.java das Verzeichnis test betreten werden, in dem sich dann Test.java befindet.

Ausgehend von TODO.txt ergäbe sich zu Test.java der folgende relative Pfad:

src/de/javabeginners/test/Test.java

Man beachte, dass am Anfang des relativen Pfades kein '/' steht. Wäre das der Fall, so würde dies auf die Wurzel des Dateisystems verweisen und es sich somit um einen absoluten Pfad handeln.

Soll eine vom Bezugspunkt aus in der Dateihierarchie weiter oben gelegene Datei referenziert werden, so kennzeichnet die Zeichenfolge ../ den Aufstieg auf die nächst höhere Ebene.
Soll in Test.java die Datei Utils.java durch einen relativen Pfad angesprochen werden, so lautet dieser folglich:

../Utils.java

Erklärung:
Von der Ebene, in der sich Test.java befindet, also von innerhalb des Verzeichnisses test, gehe eine Ebene nach oben (in das Verzeichnis javabeginners) und finde dort die Datei Utils.java.

Soll die Datei wien.jpg ausgehend von Test.java referenziert werden, so muss zunächst über javabeginners, de und src bis in das in der Abbildung oberste Verzeichnis beispiel aufgestiegen und von dort aus in das Verzeichnis img abgestiegen werden. Der Pfad lautet dann:

../../../../img/wien.jpg

Pfadangaben in Java

Java-Programme sind plattformübergreifend lauffähig. Dies hat auch Auswirkungen auf die Pfadangaben. Zum Einen sollte auf absolute Pfadangaben i.A. verzichtet werden, zum Anderen gilt es, den Dateitrenner dynamisch anzupassen. Hierzu kann in Java die entsprechende Eigenschaft der System-Properties verwendet werden:

String fs = System.getProperty("file.separator");

Der o.a. relative Pfad auf wien.jpg ließe sich somit folgendermaßen aufbauen:

String fs = System.getProperty("file.separator");
String pu = ".." + fs;
String path = pu + pu + pu + pu + "img" + fs + "wien.jpg";

Auf diese Weise wird sichergestellt, dass auf allen Systemen, auf denen ein JRE läuft, auch der korrekte Pfad angegeben wird.

Das Interface java.nio.file.Path und die Klasse java.nio.file.Paths v.7.0

Zur Verwaltung von Pfaden stellt Java ab der Version 7.0 das Interface Path und die Klasse Paths bereit. Ein Objekt des Typs Path kann z.B. über den Umweg der Ermittlung des aktuellen Betriebssystems und die Angabe der im Pfad vorliegenden Verzeichnisse konstruiert werden. Hierzu steht die Methode FileSystem#getPath() bereit. Der erzeugte Pfad muss auf dem System nicht wirklich existieren. Ein entsprechender Test ist bei der Weiterarbeit somit unabdingbar.

// path speichert: src/de/javabeginners/test/Test.java
Path path = FileSystems.getDefault().getPath("src", "de", "javabeginners", "test", "Test.java");

Die Methode erwartet als ersten Parameter das Wurzelverzeichnis des Pfades als String und als zweiten eine variable Anzahl an in der Pfadhierarchie aufeinanderfolgenden Verzeichnisnamen.
Eine weitere Möglichkeit, ein Path-Objekt zu erzeugen, besteht darin, den Pfad als String der statischen Methode Paths.get() zu übergeben.

Path abs = Paths.get("src/de/javabeginners/test/Test.java");

Die Methode ist überladen und kann auch ein URI-Objekt als Parameter übergeben bekommen.

Die Konstruktion relativer Pfade fällt mit Hilfe von Path-Objekten sehr leicht: Die Methode Path#relativize() ist geeignet, ausgehend von einem Basispfad und einem Zielpfad einen relativen Pfad zu ermitteln:

Path abs = Paths.get("beispiel/img/wien.jpg");
Path base = Paths.get("beispiel/src/de/javabeginners/test/");
Path rel = base.relativize(abs);
System.out.println(rel); // ../../../../img/wien.jpg

Umgekehrt kann, ausgehend vom aktuellen Arbeitsverzeichnis, durch die Methode toAbsolutePath() aus einem relativen auch ein absoluter Pfad erstellt werden. Diese Möglichkeiten sind jedoch begrenzt, da der relative Pfad an den Pfad zum Arbeitsverzeichnis lediglich 'angehängt' wird. Auch wird ein Neueintrag des Arbeitsverzeichnisses in die System-Eigenschaften nicht akzeptiert. Unter Verwendung der obigen Variablenbelegungen ergibt sich:

System.out.println(System.getProperty("user.dir")); // /Users/marc/Documents/workspace_4.4/Javabeginners
System.setProperty("user.dir", "/Users/marc/Desktop");
System.out.println(System.getProperty("user.dir")); // /Users/marc/Desktop
// Hier wird statt des Desktops weiterhin das Workspace-Verzeichnis als Arbeitsverzeichnis verwendet
System.out.println(path.toAbsolutePath()); // /Users/marc/Documents/workspace_4.4/Javabeginners/src/de/javabeginners/test/Test.java
System.out.println(rel.toAbsolutePath()); // /Users/marc/Documents/workspace_4.4/Javabeginners/../../../../img/wien.jpg

Wie finde ich den netzwerkpfad heraus?

Drücken Sie dazu die Tastenkombination "Win" + "R", um das "Ausführen-Fenster" zu öffnen. Geben Sie "sysdm. cpl" ein und bestätigen Sie. In diesem Fenster können Sie sehen, welcher Arbeitsgruppe der Computer angehört und eine Änderung der Zugehörigkeit vornehmen.

Wie gibt man den Pfad an?

Die Pfadkomponenten werden durch Trennzeichen wie Schrägstrich ("/") oder Backslash ("\") getrennt. Systemabhängig können andere Trennzeichen verwendet werden. Pfade können absolut (vollständig) oder relativ angegeben werden.

Auf welchem Laufwerk speichern?

In der Standardeinstellung speichert Windows 10 alle Ihre eigenen Dateien auf dem Systemlaufwerk "C:". Lagern Sie die Dateien aber auf ein anderes Laufwerk aus, dann hat das gleich mehrere Vorteile: ​​Bei Bedarf lässt sich Windows garantiert problemlos auf Laufwerk C: neu installieren.

Wie überprüfe ich die pfadangabe?

Schritt 1: Klicken Sie mit der rechten Maustaste auf die Verknüpfung der Datei auf Ihrem Computer und wählen Sie im Kontextmenü Eigenschaften. Schritt 2: Überprüfen Sie auf der Registerkarte Verknüpfung im Popup-Fenster, ob der Pfad unter Ziel verfügbar ist oder nicht.