移动到一级目录

时间:2012-03-13 02:20:17

标签: java path

是否可以在Java中移动到一级目录?

例如在命令提示符中:

C:\Users\foo\

我可以使用cd..转到:

C:\Users\

是否可以在Java中执行此操作,因为我使用System.getProperty(“user.dir”)获取目录;但是,这不是我想要工作的目录,而是目录下的1级。

我想过使用Path类方法; subpath(i,j),但如果要将“user.dir”更改为其他目录,则返回的subpath将会有所不同。

4 个答案:

答案 0 :(得分:9)

File类可以原生地执行此操作。

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

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

答案 1 :(得分:3)

在我的系统上,“..”是路径的有效组成部分 这是一个例子。

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

输出是:

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

答案 2 :(得分:1)

如前所述,您可以使用File执行此操作。或者,使用Java 7 NIO类,正如您似乎正在做的那样,以下内容应该这样做:

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

请注意,“/”也是Windows文件系统上的有效目录分隔符(尽管我在Linux上测试了此代码)。

答案 3 :(得分:1)

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

应该工作。对于级别,只需指定1。