Runtime.exec没有运行cd

Pot*_*hil 4 java ioexception

调用Runtime.getRuntime().EXEC()

当我传递命令"cd filename"
完整代码时,前者不起作用;

package com.piomnicron.riles;

import java.io.File;

import javax.swing.JOptionPane;

public class A {
protected static Runtime B = Runtime.getRuntime();

public static void main(String[] args) {
    File E = new File("");
    System.err.println(E.getAbsolutePath());
    try{
        B.exec("cd "+E.getAbsolutePath()+"\\");

    }catch(Throwable e)
    {
        JOptionPane.showMessageDialog(null, "had an oopsie!");
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

}

我的问题恰好是,为什么它抛出以下IOException:

cannot run program "cd": CreateProcess error = 2, The system could not find the file specified
Run Code Online (Sandbox Code Playgroud)

我先尝试没有+"\",以防有人认为这可能是答案,

已经做了一些谷歌搜索,并没有一个答案,我发现回答我的问题以任何方式,他们都专注于打开一个罐子,或文件,但我只是想知道为什么cd命令不起作用.我不能使用CD的绝对路径,因为这意味着如果有人移动它所包含的文件夹,它将会中断.

错误是B.exec(); 如果你想知道的话

请原谅任何语法错误,太阳在我眼中,我几乎看不到屏幕.

T.J*_*der 8

您不能(有用)发出cd命令Runtime.exec.该cd命令,在大多数操作系统的,是贝壳,不是可执行的内置命令(这就是为什么你会得到你的错误),并在外壳的运行时环境中运行.虽然您可以使用Runtime.exec启动shell并cd在其中执行命令(对于Windows cmd.exe /c "cd path"),但它只会更改shell中的当前目录,而不会更改正在运行的程序.

您需要做的是使用各种功能解析程序中的目录File,并使用已解析的绝对文件路径来处理您尝试使用cd的任何内容.

如果您发布一个(新)问题,说明您尝试通过使用实现的目标cd,我们可以帮助您实现这一目标,但使用Runtime.exec问题cd不会成为解决方案.