等待DOS命令执行完成-Java

等待DOS命令执行完成-Java,java,mysql,import,wait,dump,Java,Mysql,Import,Wait,Dump,我试图在MySQL数据库中导入大量的.dmp文件,由于需要导入的文件超过250个,因此我编写了一个应用程序来自动执行250+DOS命令。它的代码是: String baseCommand = "cmd /c MySQL -h localhost -u root amateurstable < "; Process p = Runtime.getRuntime().exec(baseCommand + filePath); String baseCommand=“cmd/c MySQL-h

我试图在MySQL数据库中导入大量的.dmp文件,由于需要导入的文件超过250个,因此我编写了一个应用程序来自动执行250+DOS命令。它的代码是:

String baseCommand = "cmd /c MySQL -h localhost -u root amateurstable < ";
Process p = Runtime.getRuntime().exec(baseCommand + filePath);
String baseCommand=“cmd/c MySQL-h localhost-u root业余表<”;
进程p=Runtime.getRuntime().exec(baseCommand+filePath);
它确实执行它应该执行的命令。问题是,一些.dmp文件大于100MB,但上面的代码不会等到命令执行完成

当它为一个大文件执行导入命令时,它不会等到导入结束,然后立即执行下一个命令。这在计算机的响应能力方面造成了很多麻烦

问题是如何让它等待命令执行完成?

Runtime.exec返回一个具有waitFor()方法的对象

等待() 如有必要,使当前线程等待,直到此进程对象表示的进程终止

因为您已经有了这个进程对象,所以只需将调用添加到waitFor()

Runtime.exec返回具有waitFor()方法的对象

等待() 如有必要,使当前线程等待,直到此进程对象表示的进程终止

因为您已经有了这个进程对象,所以只需将调用添加到waitFor()

使用

使用

您可以使用:

您可以使用:


您也看过ApacheCommonsExec吗


看起来您已经很好地处理了,但是我认为作为运行时exec的包装器使用它会更容易一些。如果您需要终止一个进程,它可以让您的生活更轻松。

您也看过Apache Commons Exec吗


看起来您已经很好地处理了,但是我认为作为运行时exec的包装器使用它会更容易一些。如果您需要终止一个进程,它可以让您的生活更轻松。

运行时也会返回该进程,因此他可以使用运行时和ProcessBuilder来实现自己的目标。不过,使用ProcessBuilder有一些好处,所以最后,这是一个很好的建议。运行时也会返回进程,因此他可以使用运行时和ProcessBuilder实现他的目标。不过,使用ProcessBuilder有一些好处,所以最后,这是一个很好的建议。
Process p = Runtime.getRuntime().exec(baseCommand + filePath);
p.waitFor();
ProcessBuilder pb = new ProcessBuilder(baseCommand + filePath, "");
Process start = pb.start();
start.waitFor();