gpt4 book ai didi

java - 正确设置工作路径

转载 作者:行者123 更新时间:2023-12-01 05:54:27 25 4
gpt4 key购买 nike

ProcessBuilder pb = new ProcessBuilder("pwd");
pb.directory(new File("/server1/work/uz/rt/adapt/0/"));
Process s = pb.start();

我期望输出为 /server1/work/uz/rt/adapt/0/,但实际上是:

/work/uz/rt/adapt/0/

/work/uz/rt/adapt/0//server1/work/uz/rt/adapt/0/ 是等效的(安装在同一位置,/work/.. 是正确的路径,/server1/work/.. 是已安装的路径),但我需要在 /server1/work/uz/rt/adapt/0/ 下工作,因为一些其他服务器只能通过该路径工作。

如何使 /server1/work/uz/rt/adapt/0/ 成为当前路径?

换句话说

为什么要公共(public)ProcessBuilder目录(文件目录)将目录转换为规范文件。如何使用绝对文件路径?

我也尝试过黑客解决方案'

        pb.directory(new File("/asr1/work/oguz/rt/adaptMLLR2/0/"){
public File getCanonicalFile(){
return this.getAbsoluteFile();
}
public String getCanonicalPath() {
return this.getAbsolutePath();
}

});

效果不太好。

我通过在 bash 脚本中添加 cd/server1/.. 行解决了我的问题.. 并删除了 pd.directory(..) 行。但是这个问题(为什么我不能将 pd.directory(..) 与 AbsolutePath 一起使用)还没有得到解答......???

最佳答案

使用 shell 的 cd 实用程序似乎是一个合适的解决方案。另一种方法是将 PWD 环境变量设置为带有符号链接(symbolic link)的路径名,但这很丑陋,除非您让 ProcessBuilder 自动为您完成此操作。

请注意,如果 PWD 不是当前目录的绝对路径名,shell 会忽略它,而是向系统询问不带符号链接(symbolic link)的绝对路径名。

关于java - 正确设置工作路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3542341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com