我已经发布了一个关于这个主题的问题,但是过了一会儿,我的问题仍然没有解决。Marko Topolnik 向我展示了一些可能的答案,但我仍然被阻止。
这是我的问题:
我有一个 Java 程序,在某些时候需要连接到外部程序。为此,我实现了以下功能:
public void login(String password) throws IOException
{
final Process p = Runtime.getRuntime().exec("p4 login");
final BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
System.out.println("going to read line");
System.out.println(in.read());
System.out.println("read line");
new PrintWriter(p.getOutputStream(),true).println(password);
System.out.println("password sent");
String line;
while ((line = in.readLine()) != null)
{
System.out.println("printing line");
System.out.println(in.read());
System.out.println(line);
System.out.println("printed line");
if (line.startsWith("User")) loggedIn=true;
}
loggedIn=false;
}
该函数成功向终端发送“p4 login”。此时终端的响应是:“输入密码:”
然后,我尝试将密码发送到终端,但我找不到这样做的方法。我曾尝试使用与第一次相同的命令,但 exec 命令只能发送标准命令。
这是我第一篇文章的问题:我使用 exec() 命令发送密码,这就是我尝试使用的原因
new PrintWriter(p.getOutputStream()).println(password);
System.out.println(s); 在我的功能中始终显示“输入密码:”,这不是我想要的。
我已经尝试刷新输出,这是在我的旧帖子中向我建议的,在发送的第一个命令和第二个命令之间等待一段时间,但仍然没有。
如果有人知道我怎么能做这样的事情,那就太好了。