当前位置: 首页 > 面试题库 >

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

从渊
2023-03-14
问题内容

我创建了一个独立的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为一个单独的进程只会更改 进程的当前工作目录。

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

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

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



 类似资料:
  • 问题内容: 我知道这是内置的shell,我可以使用运行它。 但这有可能由家人来执行命令吗? 编辑:我只是注意到这也是没有意义的。感谢大家的帮助。 问题答案: 加载 可执行文件 并用它替换当前程序映像。正如您正确指出的那样,它 不是 可执行文件,而是内置的shell。因此,您要运行的可执行文件是外壳本身。当然,这对您有帮助,但是如果您想对其进行明确说明,则可以使用: 由于这 将替换 您当前的过程映像

  • 当我在终端中点击curl代码时,我得到了200,所以我假设我编写testStytch的方式到目前为止还可以。但是,一旦我试图集成到java文件中,我就会收到错误的请求响应。我现在有点不知所措。https://github.com/libetl/curl这就是我所说的转换curl代码。 这是我得到的错误。https响应代理{HTTP/1.1 400错误请求[日期:星期四,2021 23:21:424

  • 问题内容: 我一直在寻找使用Java运行时运行外部程序的方法。可以正常工作,例如: 如您所愿创建一个新目录。现在,在Mac的bash窗口中,我可以这样写: 在名为testgame的文件夹上运行“ Love”游戏引擎。现在,之所以可行,是因为我将“ love”作为别名来调用love可执行文件。我有一种感觉,这是下面没有理由 不 工作: 而且(对于那些想知道的人)也不是: 毫无疑问,这要么是Java方

  • 问题内容: 我想创建两个文件的差异。我尝试在Java中搜索可完成此操作的代码,但是没有找到任何简单的代码/实用程序代码。因此,我想如果我能以某种方式从我的Java代码中运行linux diff / sdiff命令并使它返回一个存储diff的文件,那就太好了。 假设有两个文件fileA和fileB。我应该能够通过我的Java代码将它们的差异存储在名为fileDiff的文件中。然后从fileDiff提

  • 如何在java中调用ProcessBuilder运行nohup...&格式的bash命令? 我现在有一个简单的bash脚本t.sh。这个脚本维护一个计数器,每过1s,该计数器会+1,并且将当前该计数器的值输出到标准输出上。 我可以直接使用nohup bash t.sh & 来在linux环境下运行该脚本,该脚本会在nohup.out中输出下面的预期结果 现在,我想要在Java中通过ProcessB

  • 问题内容: 我有一个Java项目,可以在Eclipse上正常运行。现在,我需要使用命令行来运行它,例如java classpath …如何在Eclipse中基于存储的类路径来设置该类路径。 问题答案: 只需导航到类文件所在的目录并使用 编辑:您可以将替换为任何类路径。例如,要查找您的类路径,可以使用 编辑:看起来像有相当多的信息,可以帮助你在这里。