我想使用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驱动器不是我的当前目录。
如何获取当前目录?
在Linux上,当你从终端运行一个jar文件时,这两个都会返回相同的字符串:"/home/CurrentUser",不管你的jar文件在哪里。这取决于启动jar文件时,您在终端上使用的当前目录。
Paths.get("").toAbsolutePath().toString();
System.getProperty("user.dir");
如果你的main类被称为MainClass,那么试试:
MainClass.class.getProtectionDomain().getCodeSource().getLocation().getFile();
这将返回一个包含jar文件绝对路径的String。
我最喜欢的方法是从附加到当前运行进程的系统环境变量中获取。在这种情况下,您的应用程序由JVM管理。
String currentDir = System.getenv("PWD");
/*
/home/$User/Documents/java
*/
查看其他你可能会发现有用的环境变量,如home dir, os版本........
//Home directory
String HomeDir = System.getEnv("HOME");
//Outputs for unix
/home/$USER
//Device user
String user = System.getEnv("USERNAME");
//Outputs for unix
$USER
这种方法的美妙之处在于,对于所有类型的操作系统平台,所有路径都将被解析