¿Cómo obtener el directorio de trabajo actual en Java?
Quiero acceder a mi directorio de trabajo actual usando Java.
Mi código:
String currentPath = new java.io.File(".").getCanonicalPath();
System.out.println("Current dir:" + currentPath);
String currentDir = System.getProperty("user.dir");
System.out.println("Current dir using System:" + currentDir);
Producción:
Current dir: C:\WINDOWS\system32
Current dir using System: C:\WINDOWS\system32
Mi resultado no es correcto porque la unidad C no es mi directorio actual.
¿Cómo obtener el directorio actual?
Código:
public class JavaApplication {
public static void main(String[] args) {
System.out.println("Working Directory = " + System.getProperty("user.dir"));
}
}
Esto imprimirá la ruta absoluta del directorio actual desde donde se inicializó su aplicación.
Explicación:
De la documentación :
java.io
El paquete resuelve nombres de rutas relativas utilizando el directorio de usuario actual. El directorio actual se representa como propiedad del sistema, es decir, user.dir
es el directorio desde donde se invocó la JVM.
Consulte: Operaciones de ruta (Tutoriales de Java™ > Clases esenciales > E/S básicas) .
Usando java.nio.file.Path
y java.nio.file.Paths
, puede hacer lo siguiente para mostrar cuál cree Java que es su ruta actual. Esto para 7 en adelante, y usa NIO.
Path currentRelativePath = Paths.get("");
String s = currentRelativePath.toAbsolutePath().toString();
System.out.println("Current absolute path is: " + s);
Esto produce:
Current absolute path is: /Users/george/NetBeansProjects/Tutorials
ahí en mi caso es desde donde dirigí la clase.
La construcción de rutas de forma relativa, al no utilizar un separador inicial para indicar que está construyendo una ruta absoluta, utilizará esta ruta relativa como punto de partida.
Lo siguiente funciona en Java 7 y versiones posteriores (consulte aquí para obtener documentación).
import java.nio.file.Paths;
Paths.get(".").toAbsolutePath().normalize().toString();
Esto le dará la ruta de su directorio de trabajo actual:
Path path = FileSystems.getDefault().getPath(".");
Y esto le dará la ruta a un archivo llamado "Foo.txt" en el directorio de trabajo:
Path path = FileSystems.getDefault().getPath("Foo.txt");
Editar: Para obtener una ruta absoluta del directorio actual:
Path path = FileSystems.getDefault().getPath(".").toAbsolutePath();
* Actualizar * Para obtener el directorio de trabajo actual:
Path path = FileSystems.getDefault().getPath("").toAbsolutePath();
Java 11 y más reciente
Esta solución es mejor que otras y más portátil:
Path cwd = Path.of("").toAbsolutePath();
O incluso
String cwd = Path.of("").toAbsolutePath().toString();