簡體   English   中英

等待DOS命令執行完成-Java

[英]Wait until DOS command execution has finished - Java

我試圖在MySQL數據庫中導入大量.dmp文件,由於必須導入250多個文件,因此我編寫了一個應用程序來自動執行250+ DOS命令。 它的代碼:

String baseCommand = "cmd /c MySQL -h localhost -u root amateurstable < ";
Process p = Runtime.getRuntime().exec(baseCommand + filePath);

它確實執行了應該執行的命令。 問題是某些.dmp文件大於100MB,但是上面的代碼不會等到命令執行完成。

當它對大文件執行導入命令時,它不會等到導入結束並立即執行下一個命令。 就計算機的響應性而言,這引起很多麻煩。

問題是如何使其等待命令執行完成?

Runtime.exec返回一個具有waitFor()方法的Process對象。

waitFor()使當前線程在必要時等待,直到此Process對象表示的進程終止。

由於您已經具有該Process對象,因此您只需將調用添加到waitFor()

Process p = Runtime.getRuntime().exec(baseCommand + filePath);
p.waitFor();

您可以使用ProcessBuilder

ProcessBuilder pb = new ProcessBuilder(baseCommand + filePath, "");
Process start = pb.start();
start.waitFor();

您是否也看過Apache Commons Exec?

http://commons.apache.org/exec/tutorial.html

似乎您的處理工作已經到手,但我認為將其作為運行時執行程序的包裝器要容易一些。 如果您需要終止某個進程,則可以簡化生活。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM