Question Obtenir le répertoire de travail actuel en Java


Je veux accéder à mon répertoire de travail actuel en utilisant

 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);

Sortie:

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

Ma sortie n'est pas correcte car le lecteur C n'est pas mon répertoire actuel. Besoin d'aide à cet égard.


788
2018-02-02 05:24


origine


Réponses:


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

Cela va imprimer un Complétez le chemin absolu à partir duquel votre application a été initialisée.


905
2017-09-29 21:12



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

En utilisant java.nio.file.Path et java.nio.file.Paths, vous pouvez faire ce qui suit pour montrer ce que Java pense être votre chemin actuel. Ceci pour 7 et plus, et utilise NIO.

Path currentRelativePath = Paths.get("");
String s = currentRelativePath.toAbsolutePath().toString();
System.out.println("Current relative path is: " + s);

Cela produit Current relative path is: /Users/george/NetBeansProjects/Tutorials C'est dans mon cas que j'ai dirigé la classe. Construire des chemins de manière relative, en n'utilisant pas de séparateur principal pour indiquer que vous construisez un chemin absolu, utilisera ce chemin relatif comme point de départ.


310
2018-04-11 17:10



Les travaux suivants sur Java 7 et plus (voir ici pour la documentation).

import java.nio.file.Paths;

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

200
2018-03-12 12:03



Cela vous donnera le chemin de votre répertoire de travail actuel:

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

Et cela vous donnera le chemin vers un fichier appelé "Foo.txt" dans le répertoire de travail:

Path path = FileSystems.getDefault().getPath("Foo.txt");

Modifier : Pour obtenir un chemin absolu du répertoire courant à partir de la racine du système de fichiers:

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

30
2017-09-15 20:01



C'est la solution pour moi

File currentDir = new File("");

29
2018-05-28 23:09



Qu'est ce qui te fait penser ça c: \ windows \ system32 n'est pas votre répertoire actuel? le user.dir La propriété est explicitement "répertoire de travail actuel de l'utilisateur".

En d'autres termes, sauf si vous démarrez Java à partir de la ligne de commande, c: \ windows \ system32 c'est probablement votre CWD. C'est-à-dire que si vous double-cliquez pour démarrer votre programme, il est peu probable que le CWD soit le répertoire à partir duquel vous double-cliquez.

modifier: Il semble que cela ne soit vrai que pour les vieilles fenêtres et / ou les versions Java.


29
2018-02-02 05:39



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

23
2018-05-15 13:50



Utilisation CodeSource#getLocation().

Cela fonctionne aussi bien dans les fichiers JAR. Vous pouvez obtenir CodeSource par ProtectionDomain#getCodeSource() et le ProtectionDomain à son tour peut être obtenu par 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



généralement, en tant qu'objet File:

File getCwd() {
  return new File("").getAbsoluteFile();
}

vous voudrez peut-être avoir une chaîne complète qualifiée comme "D: / a / b / c" en faisant:

getCwd().getAbsolutePath()

17
2017-12-28 03:11



Je suis sur Linux et obtiens le même résultat pour ces deux approches:

@Test
public void aaa()
{
    System.err.println(Paths.get("").toAbsolutePath().toString());

    System.err.println(System.getProperty("user.dir"));
}

Paths.get("") docs

System.getProperty("user.dir") docs


12
2018-02-02 05:37