我想使用Java访问我的当前工作目录。

我的代码:

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

 String currentDir = System.getProperty("user.dir");
 System.out.println("Current dir using System:" + currentDir);

输出:

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

我的输出不正确,因为C驱动器不是我的当前目录。

如何获取当前目录?


当前回答

以下内容适用于Java 7及更高版本(请参阅这里的文档)。

import java.nio.file.Paths;

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

其他回答

这就是我的解决方案

File currentDir = new File("");

是什么让你认为c:\windows\system32不是你的当前目录?用户。dir属性显式为“用户的当前工作目录”。

换句话说,除非你从命令行启动Java,否则c:\windows\system32可能就是你的CWD。也就是说,如果您双击启动程序,CWD不太可能是您双击的目录。

编辑:这似乎只适用于旧的windows和/或Java版本。

通常,作为File对象:

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

你可能想要像“D:/a/b/c”这样的全限定字符串:

getCwd().getAbsolutePath()

System.getProperty(“java.class.path”)

使用Windows用户。dir按预期返回目录,但当你以高权限启动应用程序时(以admin身份运行),在这种情况下,你会得到C:\WINDOWS\system32