等待DOS命令执行完成-Java
我试图在MySQL数据库中导入大量的.dmp文件,由于需要导入的文件超过250个,因此我编写了一个应用程序来自动执行250+DOS命令。它的代码是:等待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
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();