Obtenga el directorio de trabajo actual en Java

1. Información general

Es una tarea fácil obtener el directorio de trabajo actual en Java, pero desafortunadamente, no hay una API directa disponible en el JDK para hacer esto.

En este tutorial, aprenderemos cómo obtener el directorio de trabajo actual en Java con java.lang. System , java.io.File, java.nio.file.FileSystems y java.nio.file.Paths .

2. Sistema

Comencemos con la solución estándar usando System # getProperty , asumiendo que nuestro nombre de directorio de trabajo actual es Baeldung en todo el código:

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

Usamos una clave de propiedad incorporada de Java user.dir para buscar el directorio de trabajo actual del mapa de propiedades del sistema . Esta solución funciona en todas las versiones de JDK.

3. Archivo

Veamos otra solución usando java.io.File :

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

Aquí, el File # getAbsolutePath usa internamente System # getProperty para obtener el nombre del directorio, similar a nuestra primera solución. Es una solución no estándar para obtener el directorio de trabajo actual y funciona en todas las versiones de JDK.

4. Sistemas de archivos

Otra alternativa válida sería utilizar la nueva API java.nio.file.FileSystems :

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

Esta solución utiliza la nueva API de Java NIO y solo funciona con JDK 7 o superior .

5. Caminos

Y finalmente, veamos una solución más simple para obtener el directorio actual usando la API java.nio.file.Paths :

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

Aquí, Paths # get usa internamente FileSystem # getPath para buscar la ruta. Utiliza la nueva API de Java NIO, por lo que esta solución solo funciona con JDK 7 o superior .

6. Conclusión

En este tutorial, exploramos cuatro formas diferentes de obtener el directorio de trabajo actual en Java. Las dos primeras soluciones funcionan en todas las versiones del JDK, mientras que las dos últimas funcionan solo con JDK 7 o superior.

Recomendamos usar la solución del sistema , ya que es eficiente y sencilla, podemos simplificarla envolviendo esta llamada API en un método de utilidad estática y acceder a ella directamente.

El código fuente de este tutorial está disponible en GitHub; es un proyecto basado en Maven, por lo que debería ser fácil de importar y ejecutar tal como está.