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

新手上路,请多包涵

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

我有一段代码使用硬编码的相对文件路径从通常启动的目录打开文件,我只想能够从不同的 Java 程序中使用该代码而不必从内部启动它一个特定的目录。看起来你应该只能调用 System.setProperty( "user.dir", "/path/to/dir" ) ,但据我所知,调用该行只是默默地失败并且什么都不做。

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

原文由 Nick 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

在纯 Java 中没有可靠的方法可以做到这一点。 Setting the user.dir property via System.setProperty() or java -Duser.dir=... does seem to affect subsequent creations of Files , but not eg FileOutputStreams

File(String parent, String child) 构造函数可以帮助您将目录路径与文件路径分开,从而更容易交换。

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

相关的 OpenJDK 错误 已于 2008 年关闭,原因是“不会修复”。

原文由 Michael Myers 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您使用 ProcessBuilder 运行遗留程序,您将能够指定其工作 目录

原文由 PhiLho 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题