java调用cmd程序,如何输入确认信息如y/n,或用户名密码

问题遇到的现象和发生背景

想在前端通过websocket实现操作一个控制台程序,中间回涉及到输入用户名密码或者确认的操作。
后端使用ProcessBuilder执行了cmd /c命令,生成了Process。process的输出流可以向调用的程序写入指令,输入流可以获取控制台 输出的部分信息
开发过程中获取process的输入流,用BufferReader.readLine()可以获取大部分程序返回的内容,但不能返回输入确认的信息, 通过输出流可以向程序写入指令,但在程序返回了输入确认信息时,再写入指令是没有反应的
查了一下bat程序的写法,我猜是使用了 set /p指令,输入前有一个prompt内容,没法通过Process类的InputStream获取。

问题相关代码,请勿粘贴截图
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream(), "GBK"));
while ((line = reader.readLine()) != null) {
     //此处无法获取到prompt的内容
    System.out.print(line);     
 }
运行结果及报错内容

通过cmd调用程序正常执行,会出现:

img


此时输入密码并回车即可继续执行。**#补充,密码为密文,输入时不可见**
但首先,process类没有获取到Password for default user:这行
其次,#通过process的OutputStream向程序写入密码,也不会有任何内容返回。

我想要达到的结果

怎样通过java实现调用cmd程序,并能在需要时进行输入?
既要读取到提示信息,又要能继续输入


BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, "GBK"));

解决方式:不要使用按行读取 使用类似如下代码 可以达到你想要的结果
while (true) {
byte[] buffer = new byte[ins.available()];
if ((length = ins.read(buffer)) != -1) {
// code
}
}