我想使用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驱动器不是我的当前目录。
如何获取当前目录?
我最喜欢的方法是从附加到当前运行进程的系统环境变量中获取。在这种情况下,您的应用程序由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
这种方法的美妙之处在于,对于所有类型的操作系统平台,所有路径都将被解析
试试这样的东西,我知道我的答案晚了,但这个明显的事情发生在java8的新版本,从那里问这个问题,但是..
的代码
import java.io.File;
public class Find_this_dir {
public static void main(String[] args) {
//some sort of a bug in java path is correct but file dose not exist
File this_dir = new File("");
//but these both commands work too to get current dir
// File this_dir_2 = new File(this_dir.getAbsolutePath());
File this_dir_2 = new File(new File("").getAbsolutePath());
System.out.println("new File(" + "\"\"" + ")");
System.out.println(this_dir.getAbsolutePath());
System.out.println(this_dir.exists());
System.out.println("");
System.out.println("new File(" + "new File(" + "\"\"" + ").getAbsolutePath()" + ")");
System.out.println(this_dir_2.getAbsolutePath());
System.out.println(this_dir_2.exists());
}
}
这将工作,并向您显示当前路径,但我现在不知道为什么java无法在新文件("")中找到当前目录;此外,我使用Java8编译器…
这工作得很好,我甚至测试了它new File(new File("").getAbsolutePath());
现在你在File对象中有了当前目录(例如File对象是f then),
f.t getabsolutepath()将以String变量类型给出路径…
在非C盘的另一个目录中进行测试工作正常
我希望你想访问当前目录,包括包,即,如果你的Java程序在c:\myApp\com\foo\src\service\MyTest.java,你想打印直到c:\myApp\com\foo\src\service,那么你可以尝试以下代码:
String myCurrentDir = System.getProperty("user.dir")
+ File.separator
+ System.getProperty("sun.java.command")
.substring(0, System.getProperty("sun.java.command").lastIndexOf("."))
.replace(".", File.separator);
System.out.println(myCurrentDir);
注意:此代码仅在Windows和Oracle JRE中测试。