3 Stimmen

Wechsel zu einem Verzeichnis eine Ebene tiefer

Ist es in Java möglich, in ein Verzeichnis eine Ebene tiefer zu wechseln?

Zum Beispiel in der Eingabeaufforderung:

C:\Users\foo\

Ich kann cd.. zu gehen:

C:\Users\

Ist es möglich, dies zu tun in Java weil ich mit System.getProperty("user.dir") ein Verzeichnis erhalte, das jedoch nicht das Verzeichnis ist, in dem ich arbeiten möchte, sondern eine Ebene tiefer im Verzeichnis.

Ich habe daran gedacht, die Methode der Path-Klasse zu verwenden; subpath(i,j) Wenn jedoch das Verzeichnis "user.dir" in ein anderes Verzeichnis geändert wird, dann wird die zurückgegebene subpath wäre anders.

10voto

sethcall Punkte 2737

Die Dateiklasse kann dies von Haus aus tun.

File upOne = new File(System.getProperty("user.dir")).getParentFile()

http://docs.oracle.com/javase/6/docs/api/java/io/File.html#getParentFile%28%29

4voto

Java42 Punkte 7508

Auf meinem System ist das ".." ein gültiger Bestandteil eines Pfades.
Hier ist ein Beispiel.

File file;
String userDir = System.getProperty("user.dir");
file = new File(userDir);
System.out.println(file.getCanonicalPath());
file = new File(userDir+"/..");
System.out.println(file.getCanonicalPath());

Die Ausgabe ist:

C:\ano\80g\workaces\_JAV_1.0.0\CODE_EXAMPLE
C:\ano\80g\workaces\_JAV_1.0.0

2voto

ig0774 Punkte 36899

Wie in den vorangegangenen Antworten bereits erwähnt, können Sie dies mit File . Alternativ können Sie auch die Java 7 NIO-Klassen verwenden, wie Sie es anscheinend tun, und zwar wie folgt

Paths.get(System.getProperty("user.dir") + "/..").toRealPath();

Beachten Sie, dass "/" auch im Windows-Dateisystem ein gültiges Verzeichnistrennzeichen ist (ich habe diesen Code allerdings unter Linux getestet).

1voto

private static void downDir(int levels) {
    String oldPath = System.getProperty("user.dir");
    String[] splitedPathArray = oldPath.split("/");
    levels = splitedPathArray.length - levels;
    List<String> splitedPathList = Arrays.asList(splitedPathArray);
    splitedPathList = splitedPathList.subList(0, levels);
    String newPath = String.join("/", splitedPathList);
    System.setProperty("user.dir", newPath);
}

Sollte funktionieren. Für die Stufen geben Sie einfach 1 an.

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