Pregunta Obtener el directorio de trabajo actual en Java


Quiero acceder a mi directorio de trabajo actual usando

 String current = new java.io.File( "." ).getCanonicalPath();
        System.out.println("Current dir:"+current);
 String currentDir = System.getProperty("user.dir");
        System.out.println("Current dir using System:" +currentDir);

Salida:

Current dir: C:\WINDOWS\system32
Current dir using System: C:\WINDOWS\system32

Mi salida no es correcta porque la unidad C no es mi directorio actual. Necesito ayuda en este sentido.


788
2018-02-02 05:24


origen


Respuestas:


public class JavaApplication1 {
  public static void main(String[] args) {
       System.out.println("Working Directory = " +
              System.getProperty("user.dir"));
  }
}

Esto imprimirá un complete la ruta absoluta desde donde se inicializó su aplicación.


905
2017-09-29 21:12



Ver: http://docs.oracle.com/javase/tutorial/essential/io/pathOps.html

Utilizando java.nio.file.Path y java.nio.file.Paths, puede hacer lo siguiente para mostrar lo que Java cree 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 relative path is: " + s);

Estas salidas Current relative path is: /Users/george/NetBeansProjects/Tutorials que en mi caso es de donde hice la clase. La construcción de rutas de una manera relativa, al no utilizar un separador principal para indicar que está construyendo una ruta absoluta, utilizará esta ruta relativa como punto de partida.


310
2018-04-11 17:10



Lo siguiente funciona en Java 7 y versiones posteriores (ver aquí para la documentación).

import java.nio.file.Paths;

Paths.get(".").toAbsolutePath().normalize().toString();

200
2018-03-12 12:03



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 desde la raíz del sistema de archivos:

Path path = FileSystems.getDefault().getPath(".").toAbsolutePath();

30
2017-09-15 20:01



Esta es la solución para mí

File currentDir = new File("");

29
2018-05-28 23:09



Qué te hace pensar que c: \ windows \ system32 no es tu directorio actual? los user.dir propiedad explícitamente es "Directorio de trabajo actual del usuario".

Para decirlo de otra manera, a menos que inicie Java desde la línea de comando, c: \ windows \ system32 Probablemente sea tu CWD. Es decir, si hace doble clic para iniciar su programa, es poco probable que el CWD sea el directorio desde el que hace doble clic.

Editar: Parece que esto solo es cierto para versiones antiguas de Windows y / o Java.


29
2018-02-02 05:39



this.getClass().getClassLoader().getResource("").getPath()

23
2018-05-15 13:50



Utilizar CodeSource#getLocation().

Esto funciona bien en archivos JAR también. Puedes obtener CodeSource por ProtectionDomain#getCodeSource() y el ProtectionDomain a su vez se puede obtener Class#getProtectionDomain().

public class Test {
    public static void main(String... args) throws Exception {
        URL location = Test.class.getProtectionDomain().getCodeSource().getLocation();
        System.out.println(location.getFile());
    }
}

23
2018-01-26 12:13