1281 Stimmen

Wie erhalte ich das aktuelle Arbeitsverzeichnis in Java?

Ich möchte mein aktuelles Arbeitsverzeichnis mit Java zugreifen.

Mein Code:

 String currentPath = new java.io.File(".").getCanonicalPath();
 System.out.println("Aktuelles Verzeichnis:" + currentPath);

 String currentDir = System.getProperty("user.dir");
 System.out.println("Aktuelles Verzeichnis mit System:" + currentDir);

Ausgabe:

Aktuelles Verzeichnis: C:\WINDOWS\system32
Aktuelles Verzeichnis mit System: C:\WINDOWS\system32

Meine Ausgabe ist nicht korrekt, da das Laufwerk C nicht mein aktuelles Verzeichnis ist.

Wie kann man das aktuelle Verzeichnis bekommen?

36voto

user2430452 Punkte 377

Dies ist die Lösung für mich

Datei currentDir = new File("");

30voto

Paul Wagland Punkte 25524

Was lässt dich glauben, dass c:\windows\system32 nicht dein aktuelles Verzeichnis ist? Die [user.dir](http://download.oracle.com/javase/1.4.2/docs/api/java/lang/System.html#getProperties()) Eigenschaft ist explizit als "Benutzers aktuelles Arbeitsverzeichnis" definiert.

Um es anders auszudrücken, wenn Sie Java nicht über die Befehlszeile starten, ist höchstwahrscheinlich c:\windows\system32 Ihr Arbeitsverzeichnis. Wenn Sie also Ihr Programm durch Doppelklick starten, ist es unwahrscheinlich, dass das Arbeitsverzeichnis das Verzeichnis ist, von dem aus Sie doppelgeklickt haben.

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

26voto

Amin Bahiraee Punkte 481

Verwenden Sie CodeSource#getLocation().

Dies funktioniert auch in JAR-Dateien. Sie können CodeSource über ProtectionDomain#getCodeSource() erhalten, und das ProtectionDomain wiederum über 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());
    }
}

24voto

Peter De Winter Punkte 1133
this.getClass().getClassLoader().getResource("").getPath()

19voto

comeGetSome Punkte 1883

Generell als File-Objekt:

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

Sie möchten möglicherweise den voll qualifizierten String wie "D:/a/b/c" haben, indem Sie dies tun:

getCwd().getAbsolutePath()

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X