一尘不染

如何在Java运行时中使用“ cd”命令?

java

我创建了一个独立的Java应用程序,试图在Ubuntu 10.04终端中使用“ cd”命令更改目录。我使用了以下代码。

String[] command = new String[]{"cd",path};
Process child = Runtime.getRuntime().exec(command, null);

但是上面的代码给出了以下错误

Exception in thread "main" java.io.IOException: Cannot run program "cd": java.io.IOException: error=2, No such file or directory

谁能告诉我如何实施?


阅读 1243

收藏
2020-09-08

共1个答案

一尘不染

没有称为的可执行文件cd,因为它 不能 在单独的进程中实现。

问题在于,每个进程都有自己的当前工作目录,将其实现cd为一个单独的进程只会更改 进程的当前工作目录。

在Java程序中,您 不能 更改当前的工作目录,也不需要更改。只需使用绝对文件路径。

当前工作目录很重要的一种情况是执行外部进程(使用ProcessBuilderRuntime.exec())。在这些情况下,您可以显式指定要用于新启动的进程的工作目录(分别ProcessBuilder.directory()三个参数Runtime.exec())。

注意:当前工作目录可以从system属性中
读取user.dir。您可能会很想 设置
该系统属性。请注意,这样做会导致非常糟糕的不一致性,因为它不 _意味着_可写

2020-09-08