如何从 Java 程序中更改当前工作目录?我能找到的关于这个问题的所有信息都表明你根本做不到,但我不敢相信事实确实如此。
我有一段代码使用硬编码的相对文件路径从通常启动的目录打开文件,我只想能够从不同的 Java 程序中使用该代码而不必从内部启动它一个特定的目录。看起来你应该只能调用 System.setProperty( "user.dir", "/path/to/dir" )
,但据我所知,调用该行只是默默地失败并且什么都不做。
如果 Java 不允许您这样做,我会理解,如果不是因为它允许您 获取 当前工作目录,甚至允许您使用相对文件路径打开文件….
原文由 Nick 发布,翻译遵循 CC BY-SA 4.0 许可协议
在纯 Java 中没有可靠的方法可以做到这一点。 Setting the
user.dir
property viaSystem.setProperty()
orjava -Duser.dir=...
does seem to affect subsequent creations ofFiles
, but not egFileOutputStreams
。File(String parent, String child)
构造函数可以帮助您将目录路径与文件路径分开,从而更容易交换。另一种方法是设置脚本以从不同的目录运行 Java,或者使用 下面建议 的 JNI 本机代码。
相关的 OpenJDK 错误 已于 2008 年关闭,原因是“不会修复”。