Rufen Sie das aktuelle Arbeitsverzeichnis in Java ab

1. Übersicht

Es ist eine einfache Aufgabe, das aktuelle Arbeitsverzeichnis in Java abzurufen, aber leider ist im JDK keine direkte API dafür verfügbar.

In diesem Tutorial erfahren Sie, wie Sie mit java.lang das aktuelle Arbeitsverzeichnis in Java abrufen. System , java.io.File, java.nio.file.FileSystems und java.nio.file.Paths .

2. System

Beginnen wir mit der Standardlösung unter Verwendung von System # getProperty , vorausgesetzt, unser aktueller Arbeitsverzeichnisname lautet im gesamten Code Baeldung :

static final String CURRENT_DIR = "Baeldung"; @Test void whenUsingSystemProperties_thenReturnCurrentDirectory() { String userDirectory = System.getProperty("user.dir"); assertTrue(userDirectory.endsWith(CURRENT_DIR)); }

Wir haben einen in Java integrierten Eigenschaftsschlüssel user.dir verwendet , um das aktuelle Arbeitsverzeichnis aus der Eigenschaftszuordnung des Systems abzurufen . Diese Lösung funktioniert in allen JDK-Versionen.

3. Datei

Sehen wir uns eine andere Lösung mit java.io.File an :

@Test void whenUsingJavaIoFile_thenReturnCurrentDirectory() { String userDirectory = new File("").getAbsolutePath(); assertTrue(userDirectory.endsWith(CURRENT_DIR)); }

Hier verwendet die Datei # getAbsolutePath intern System # getProperty , um den Verzeichnisnamen abzurufen , ähnlich wie bei unserer ersten Lösung. Es ist eine nicht standardmäßige Lösung, um das aktuelle Arbeitsverzeichnis abzurufen, und funktioniert in allen JDK-Versionen.

4. Dateisysteme

Eine andere gültige Alternative wäre die Verwendung der neuen API java.nio.file.FileSystems :

@Test void whenUsingJavaNioFileSystems_thenReturnCurrentDirectory() { String userDirectory = FileSystems.getDefault() .getPath("") .toAbsolutePath() .toString(); assertTrue(userDirectory.endsWith(CURRENT_DIR)); }

Diese Lösung verwendet die neue Java NIO-API und funktioniert nur mit JDK 7 oder höher .

5. Pfade

Und schließlich sehen wir uns eine einfachere Lösung an, um das aktuelle Verzeichnis mithilfe der API java.nio.file.Paths abzurufen :

@Test void whenUsingJavaNioPaths_thenReturnCurrentDirectory() { String userDirectory = Paths.get("") .toAbsolutePath() .toString(); assertTrue(userDirectory.endsWith(CURRENT_DIR)); }

Hier verwendet Paths # get intern FileSystem # getPath , um den Pfad abzurufen. Es verwendet die neue Java NIO-API, sodass diese Lösung nur mit JDK 7 oder höher funktioniert .

6. Fazit

In diesem Tutorial haben wir vier verschiedene Möglichkeiten untersucht, um das aktuelle Arbeitsverzeichnis in Java abzurufen. Die ersten beiden Lösungen funktionieren in allen Versionen des JDK, während die letzten beiden nur mit JDK 7 oder höher funktionieren .

Wir empfehlen die Verwendung der System - Lösung , da sie effizient ist und gerade nach vorne, können wir es vereinfachen , indem diesen API - Aufruf Einwickeln in einer statischen Hilfsmethode und greifen Sie direkt.

Der Quellcode für dieses Tutorial ist auf GitHub verfügbar - es ist ein Maven-basiertes Projekt, daher sollte es einfach zu importieren und unverändert auszuführen sein.