java - Java 执行外部程序并捕获输出
问题描述
所以我尝试Execute
使用外部程序并捕获output
. 目前执行命令的部分工作正常(使用.bat
文件),我可以在cmd
窗口上看到输出。
不需要读取输出的部分,它似乎堆叠在我的内部while
这是我尝试过的:
String[] command = {"cmd.exe", "/C", "Start", "d:\\batFile.bat"};
Process process = Runtime.getRuntime().exec(command);
InputStream is = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
更新
这是我的.bat
文件:
docker volume create --name=mydb
timeout 3
docker run -d -p 27017:27017 -v mydb:/data/db mongo
timeout 3
解决方案
也许您可以尝试像这样重定向输出:
Process runtimeProcess1;
ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C","Start","d:\\batFile.bat");
pb.redirectOutput(Redirect.INHERIT);
pb.redirectError(Redirect.INHERIT);
pb.redirectInput(Redirect.INHERIT);
runtimeProcess1 = pb.start();
int processComplete1 = runtimeProcess1.waitFor();
推荐阅读
- intellij-idea - 有谁知道为什么 IDEA 数据库视图仅以秒精度显示日期时间?
- amazon-web-services - 未找到 Amazon S3 待处理
- python - 没有明显原因的 Python 对象更改
- android - 在 Android 设备上安装 gluonfx:install 命令失败,找不到文件
- rtmp - nginx rtmp模块 - ffmpeg随机无法启动
- python - BeautifulSoup .text 属性缺少换行符
- asp.net - 请告知 ASP.NET WebApi 应用程序的现代架构
- c++ - 算法中的无限while循环错误
- reactjs - 如何使用 useSelector for chartjs 在 combineReducers 文件中访问和显示多个减速器?
- python - AttributeError:模块'bs4.element'没有属性'find'