如何使用java在提示输入密码时执行cmd行

如何使用java在提示输入密码时执行cmd行,java,cmd,Java,Cmd,Hy 我试图从java应用程序中转储postgresql数据库 在cmd中,一切正常: pg_dump -U user database>outfile.sql 和CMD提示输入密码 要从my java访问此命令行,请执行以下操作: Runtime.getRuntime().exec("pg_dump -U user database>outfile.sql"); 现在它等待密码 我尝试了Runtime.getRuntime().exec(String[])…,但什么都没有

Hy

我试图从java应用程序中转储postgresql数据库

在cmd中,一切正常:

pg_dump -U user database>outfile.sql 
和CMD提示输入密码

要从my java访问此命令行,请执行以下操作:

Runtime.getRuntime().exec("pg_dump -U user database>outfile.sql"); 
现在它等待密码

我尝试了
Runtime.getRuntime().exec(String[])…
,但什么都没有

无论如何,我必须在
.exec()方法中设置参数“password”


pg_dump语句不接受其命令行中的密码。

您可以按照中所述重定向进程的标准输入

本质上,它们使用
Process.getInputStream
方法并写入此方法返回的流(例如,使用BufferedWriter)

您将获得由
exec()
方法返回的必要的
Process
对象。

谢谢Max

我试过这个

    Process p = Runtime.getRuntime().exec(cmd);
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
    bw.write("password"); 
    //bw.eriteLine();
    bw.flush();
但还是什么都没有。我使用InputStreamReader来查看cmd执行中的错误或消息,以及其他信息。它仍在等待“密码”

但我有另一个解决办法:

    Process p = Runtime.getRuntime().exec("cmd /c start cmd.exe /C\"pg_dump -U user -W db>outfile.sql\"");
因此,黑色提示语以“Password:”打开。写下密码,按回车键,密码就会自动关闭

我受够了

感谢您错过按“回车”键。 这一修改为我带来了好处:

bw.write("password" + "\n");
完整的工作解决方案:

Process process = Runtime.getRuntime().exec(cmd);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
bw.write("password\n"); 
bw.flush();
试图更新@cortexiphan解决方案,但我的编辑被拒绝