您的位置:首页 > 编程语言 > Java开发

JAVA调用外部程序错误

2017-11-05 13:32 423 查看

CMD

连续调用多次

  连续多次调用cmd执行外部程序时,不知道什么原因导致阻塞。

public ArrayList<String> executeCmdArr(ArrayList<String> cmdCommandArr) {
ArrayList<String> cmdLog = new ArrayList<String>();
String lineData;
try {
for (String parameter : cmdCommandArr) {
System.out.println("CallCMD -- executeCmdArr:\t" + parameter);
process = Runtime.getRuntime().exec(parameter);
//A
process.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK"));
while ((lineData = reader.readLine()) != null){
cmdLog.add(lineData);
}
}
return cmdLog;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}


  当使用下述命令多次使用“XCOPY”命令进行复制时,在A这里会阻塞,一直在等待:

cmdCommandArr = new ArrayList<String>(){{
add("cmd.exe /k xcopy E:\\Z\\2016-10-13\\*国内及全球*简报.xlsx E:\\X\\JB\\ /f /y");
add("cmd.exe /k xcopy E:\\Z\\2016-10-14\\*twsp*.txt E:\\X\\twsp\\ /f /y");
add("cmd.exe /k xcopy E:\\Z\\2016-10-14\\*国内及全球*简报.xlsx E:\\X\\JB\\ /f /y");
}};


  但是当使用下述命令多次使用“XCOPY”命令进行复制时,就可以正常执行完全部复制操作:

cmdCommandArr = new ArrayList<String>(){{
add("xcopy E:\\Z\\2016-10-13\\*国内及全球*简报.xlsx E:\\X\\JB\\ /f /y");
add("xcopy E:\\Z\\2016-10-14\\*twsp*.txt E:\\X\\twsp\\ /f /y");
add("xcopy E:\\Z\\2016-10-14\\*国内及全球*简报.xlsx E:\\X\\JB\\ /f /y");
}};


查摆在于调用时,是否加入“cmd.exe”,至于造成这一问题的原因,目前还不清楚。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java