我创建了一个独立的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
谁能告诉我如何实施?
没有称为的可执行文件cd,因为它 不能 在单独的进程中实现。
cd
问题在于,每个进程都有自己的当前工作目录,将其实现cd为一个单独的进程只会更改 该 进程的当前工作目录。
在Java程序中,您 不能 更改当前的工作目录,也不需要更改。只需使用绝对文件路径。
当前工作目录很重要的一种情况是执行外部进程(使用ProcessBuilder或Runtime.exec())。在这些情况下,您可以显式指定要用于新启动的进程的工作目录(分别ProcessBuilder.directory()为三个参数Runtime.exec())。
ProcessBuilder
Runtime.exec()
ProcessBuilder.directory()
注意:当前工作目录可以从system属性中 读取user.dir。您可能会很想 设置 该系统属性。请注意,这样做会导致非常糟糕的不一致性,因为它不 _意味着_可写。
user.dir