移动到一级目录

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

例如,在命令提示符中:

C:\Users\foo\ 

我可以用cd..去:

 C:\Users\ 

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

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

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

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

 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 

正如之前的答案所指出的那样,你可以使用File来做到这一点。 或者,使用Java 7 NIO类,正如您似乎正在做的那样,以下内容应该执行相同的操作:

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

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

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

应该管用。 对于级别,只需指定1。