Obtenir le répertoire de travail actuel en Java

1. Vue d'ensemble

Il est facile d'obtenir le répertoire de travail actuel en Java, mais malheureusement, il n'y a pas d'API directe disponible dans le JDK pour ce faire.

Dans ce didacticiel, nous allons apprendre comment obtenir le répertoire de travail actuel en Java avec java.lang. System , java.io.File, java.nio.file.FileSystems et java.nio.file.Paths .

2. Système

Commençons par la solution standard utilisant System # getProperty , en supposant que notre nom de répertoire de travail actuel est Baeldung dans tout le code:

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

Nous avons utilisé une clé de propriété intégrée Java user.dir pour récupérer le répertoire de travail actuel à partir de la carte des propriétés du système . Cette solution fonctionne sur toutes les versions de JDK.

3. Fichier

Voyons une autre solution utilisant java.io.File :

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

Ici, le fichier # getAbsolutePath utilise en interne System # getProperty pour obtenir le nom du répertoire, similaire à notre première solution. C'est une solution non standard pour obtenir le répertoire de travail actuel, et cela fonctionne sur toutes les versions de JDK.

4. Systèmes de fichiers

Une autre alternative valable serait d'utiliser la nouvelle API java.nio.file.FileSystems :

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

Cette solution utilise la nouvelle API Java NIO et ne fonctionne qu'avec JDK 7 ou supérieur .

5. Chemins

Et enfin, voyons une solution plus simple pour obtenir le répertoire actuel à l'aide de l' API java.nio.file.Paths :

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

Ici, Paths # get utilise en interne FileSystem # getPath pour récupérer le chemin. Il utilise la nouvelle API Java NIO, donc cette solution fonctionne uniquement avec JDK 7 ou supérieur .

6. Conclusion

Dans ce didacticiel, nous avons exploré quatre manières différentes d'obtenir le répertoire de travail actuel en Java. Les deux premières solutions fonctionnent sur toutes les versions du JDK tandis que les deux dernières fonctionnent uniquement avec le JDK 7 ou supérieur.

Nous vous recommandons d'utiliser la solution System car elle est efficace et simple, nous pouvons la simplifier en enveloppant cet appel d'API dans une méthode utilitaire statique et y accéder directement.

Le code source de ce didacticiel est disponible sur GitHub - il s'agit d'un projet basé sur Maven, il devrait donc être facile à importer et à exécuter tel quel.