Frage Das aktuelle Arbeitsverzeichnis in Java abrufen


Ich möchte auf mein aktuelles Arbeitsverzeichnis zugreifen

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

Ausgabe:

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

Meine Ausgabe ist nicht korrekt, da C-Laufwerk nicht mein aktuelles Verzeichnis ist. Brauchen Sie Hilfe in dieser Hinsicht.


788
2018-02-02 05:24


Ursprung


Antworten:


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

Dies wird ein drucken Vervollständigen Sie den absoluten Pfad von der Stelle, an der Ihre Anwendung initialisiert wurde.


905
2017-09-29 21:12



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

Verwenden java.nio.file.Path und java.nio.file.PathsSie können Folgendes tun, um zu zeigen, was Java für Ihren aktuellen Pfad hält. Dies für 7 und weiter und verwendet NIO.

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

Dies gibt aus Current relative path is: /Users/george/NetBeansProjects/Tutorials Das ist in meinem Fall, wo ich die Klasse leitete. Wenn Sie Pfade relativ erstellen, indem Sie kein vorangestelltes Trennzeichen verwenden, um anzugeben, dass Sie einen absoluten Pfad konstruieren, wird dieser relative Pfad als Startpunkt verwendet.


310
2018-04-11 17:10



Das Folgende funktioniert auf Java 7 und höher (siehe Hier für die Dokumentation).

import java.nio.file.Paths;

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

200
2018-03-12 12:03



Dadurch erhalten Sie den Pfad Ihres aktuellen Arbeitsverzeichnisses:

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

Und das wird Ihnen den Pfad zu einer Datei namens "Foo.txt" im Arbeitsverzeichnis geben:

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

Bearbeiten: So erhalten Sie einen absoluten Pfad des aktuellen Verzeichnisses vom Stammverzeichnis des Dateisystems:

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

30
2017-09-15 20:01



Das ist die Lösung für mich

File currentDir = new File("");

29
2018-05-28 23:09



Was bringt dich dazu, das zu denken c: \ windows \ system32 ist nicht dein aktuelles Verzeichnis? Das user.dir Eigenschaft ist explizit "das aktuelle Arbeitsverzeichnis des Benutzers".

Um es anders auszudrücken, es sei denn, Sie starten Java über die Befehlszeile c: \ windows \ system32 wahrscheinlich ist dein CWD. Das heißt, wenn Sie Ihr Programm mit einem Doppelklick starten, ist das CWD wahrscheinlich nicht das Verzeichnis, auf das Sie doppelklicken.

Bearbeiten: Es scheint, dass dies nur für alte Windows- und / oder Java-Versionen gilt.


29
2018-02-02 05:39



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

23
2018-05-15 13:50



Benutzen CodeSource#getLocation().

Dies funktioniert auch in JAR-Dateien. Sie können erhalten CodeSource durch ProtectionDomain#getCodeSource() und das ProtectionDomain wiederum kann durch erhalten werden 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