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/
成为当前路径?
其他词语
为什么公共ProcessBuilder目录(文件目录) 将目录转换为规范文件。我怎样才能使用绝对文件路径??
我也试过黑客解决'
pb.directory(new File("/asr1/work/oguz/rt/adaptMLLR2/0/"){
public File getCanonicalFile(){
return this.getAbsoluteFile();
}
public String getCanonicalPath() {
return this.getAbsolutePath();
}
});
也不起作用。
我通过将cd / server1 / .. line添加到bash脚本中解决了我的问题..并删除了pd.directory(..)行。但是这个问题(为什么我不能使用绝对路径的pd.directory(..))还没有回答...... ???
答案 0 :(得分:0)
使用shell的cd
实用程序似乎是一个合适的解决方案。另一种方法是将PWD
环境变量设置为带符号链接的路径名,但这很难看,除非你ProcessBuilder
自动为你做这件事。
请注意,如果shell不是当前目录的绝对路径名,则会忽略PWD
,而是向系统询问没有符号链接的绝对路径名。