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

2022-08-31 17:30:21

我创建了一个独立的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

任何人都可以告诉我如何实现它吗?


答案 1

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

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

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

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

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


答案 2

请参阅下面的链接(这解释了如何执行此操作):

http://alvinalexander.com/java/edu/pj/pj010016

即:

String[] cmd = { "/bin/sh", "-c", "cd /var; ls -l" };
Process p = Runtime.getRuntime().exec(cmd);

推荐