return true;
} else {
return false;
}
} catch (Exception e) {
log.error("uploadFileByFtp exception:{}", e);
}
return false;
}
虽然功能实现了,但感觉缺少点什么?
二、waitFor()
-----------
waitFor()函数表示,等待子进程执行结束,或者已手动终止子进程,此方法立即返回,否则出于阻塞状态。
当RunTime对象调用exec方法后,jvm会创建一个子进程,该子进程与jvm建立三个管道连接:标准输入流、标准输出流、标准错误流。假设该子进程不断向标准输入流、标准输出流写数据,而jvm不读取的话,会导致缓冲区塞满而无法继续写数据,最终堵塞在waitFor这里。
问题的关键就是,**将缓冲区中的信息读出来,便可以避免线程阻塞问题。**
public static boolean uploadFileByFtp2() {
try {
String path = "D:tool\\uploadFileByFtp\\log.txt";
File filePath = new File(path);
Process pro = Runtime.getRuntime().exec("cmd /c " + "D:\\tool\\uploadFileByFtp.exe" + " " + path);
pro.waitFor();
List<String> logs =