3 回答

TA贡献1789条经验 获得超10个赞
如果一次运行两个命令只是为了更改运行命令提示符的目录,则Runtime.exec方法会出现重载,允许您指定当前工作目录。喜欢,
Runtime rt = Runtime.getRuntime();
rt.exec("cmd.exe /c start command", null, new File(newDir));
这将在newDir的目录中打开命令提示符。我认为您的解决方案也可以正常工作,但这会使您的命令字符串或数组更加清晰。
将命令作为字符串并将命令作为String数组有一个重载。
但是,您可能会发现使用ProcessBuilder更加容易,因为ProcessBuilder有一个directory方法来设置当前的工作目录。
希望这可以帮助。

TA贡献1784条经验 获得超9个赞
public static void main(String[] args) {
try {
String ss = null;
Process p = Runtime.getRuntime().exec("cmd.exe /c start dir ");
BufferedWriter writeer = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
writeer.write("dir");
writeer.flush();
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
System.out.println("Here is the standard output of the command:\n");
while ((ss = stdInput.readLine()) != null) {
System.out.println(ss);
}
System.out.println("Here is the standard error of the command (if any):\n");
while ((ss = stdError.readLine()) != null) {
System.out.println(ss);
}
} catch (IOException e) {
System.out.println("FROM CATCH" + e.toString());
}
}
添加回答
举报