如何使用java在提示输入密码时执行cmd行
Hy 我试图从java应用程序中转储postgresql数据库 在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[])…,但什么都没有
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解决方案,但我的编辑被拒绝