如何在Java程序中更改当前工作目录?我所能找到的关于这个问题的所有东西都声称你根本不能这样做,但我不敢相信这是真的。
我有一段代码,它使用通常启动文件的目录中的硬编码相对文件路径打开文件,我只希望能够在不同的Java程序中使用该代码,而不必从特定目录中启动它。看起来您应该能够调用System.setProperty( "user.dir", "/path/to/dir" )
,但是据我所知,调用这条线路只是默默地失败,并且什么也不做。
如果Java不允许你这样做,如果不是因为它允许你获得当前的工作目录,甚至允许你使用相对文件路径打开文件,我会理解的。
发布于 2009-05-08 14:59:29
在纯Java中没有可靠的方法可以做到这一点。
如果您将目录路径与文件路径分开构建,则File(String parent, String child)
构造函数可以提供帮助,从而使交换更容易。
另一种方法是设置一个脚本从不同的目录运行Java,或者使用JNI本机代码as suggested below。
The relevant Sun bug在2008年被关闭,因为“不会修复”。
发布于 2009-05-08 15:04:04
如果您使用ProcessBuilder运行您的遗留程序,您将能够指定它的工作directory。
发布于 2011-11-21 04:45:07
可以更改PWD,使用JNA/JNI调用libc。JRuby人员有一个方便的java库,用于调用POSIX,名为jna-posix,这里是the maven info
您可以看到它使用here的示例(Clojure代码,对不起)。查看函数chdirToRoot
https://stackoverflow.com/questions/840190
复制相似问题