在java程序中连接两个DOS命令

在java程序中连接两个DOS命令,java,cmd,Java,Cmd,我想在java程序中连接两个dos命令。首先我想更改目录,然后列出其中的文件和文件夹。所以我就这样写 try { Process process = UI.this.rt.exec("cmd.exe /c cd C:\\Users & start dir"); process.waitFor(); InputStream in = process.getInputStream(); while (in.read() != -1)

我想在java程序中连接两个dos命令。首先我想更改目录,然后列出其中的文件和文件夹。所以我就这样写

 try
    {
      Process process = UI.this.rt.exec("cmd.exe /c cd C:\\Users & start dir");
      process.waitFor();
      InputStream in = process.getInputStream();
      while (in.read() != -1) {}
    }
    catch (Exception e)
    {
      System.out.println(e);
    }
但这是行不通的。当我在桌面上执行此操作时,不会更改目录并显示桌面上的文件和文件夹。你能帮我解决这个问题吗?我使用的是Windows7机器

谢谢


Isuru Liyanage

将命令写入磁盘上的批处理文件并执行批处理。
如果您不希望磁盘上有这样的批处理,请按需创建并在使用后删除。
或者只使用java内置功能列出文件

编辑
但是你的代码是有效的。我试过了。

更改目录后,会打开一个dos框并列出目录。

您可以使用ProcessBuilder设置稍后执行的进程的工作目录


或者,按照建议执行else线程,并使用Java API列出目录中的文件,这更合理。

创建进程时,您可以传递命令字符串数组,如下所示:

String[] command = new String[3];
                command[0] = "cmd";
                command[1] = "/c";
                command[2] = " cd c:\\Users && dir";

                Process p = Runtime.getRuntime().exec(command);

删除开始,它将在新窗口中运行文件。另外,由于新命令中没有cmd,因此DIR不会被识别为命令。如果出于某种原因必须使用start,也可以将cmd/c添加到dir部分

另外,
dirc:\users
是您实际需要做的所有事情。无需或无理由更改目录