在Java中更改当前工作目录?

2022-08-31 06:38:44

如何从Java程序中更改当前工作目录?我所能找到的关于这个问题的所有东西都声称你根本做不到,但我不敢相信事实确实如此。

我有一段代码,它使用硬编码的相对文件路径从它通常启动的目录中打开文件,我只是希望能够从不同的Java程序中使用该代码,而不必从特定目录中启动它。看起来你应该只能打电话,但据我所知,拨打那条线只是默默地失败了,什么也没做。System.setProperty( "user.dir", "/path/to/dir" )

如果Java不允许您这样做,如果不是因为它允许您获取当前工作目录,甚至允许您使用相对文件路径打开文件,我会理解。


答案 1

在纯Java中没有可靠的方法来做到这一点。通过 或 设置属性似乎会影响 的后续创建,但不会影响 例如 。user.dirSystem.setProperty()java -Duser.dir=...FilesFileOutputStreams

File(字符串父级,字符串子级)构造函数可以在将目录路径与文件路径分开构建时提供帮助,从而允许更轻松地交换。

另一种方法是设置一个脚本以从其他目录运行 Java,或者按照下面的建议使用 JNI 本机代码。

相关的OpenJDK错误在2008年被关闭,因为“不会修复”。


答案 2

如果使用 ProcessBuilder 运行旧版程序,则可以指定其工作目录


推荐