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

内容来源于 Stack Overflow,遵循 CC BY-SA 4.0 许可协议进行翻译与使用。IT领域专用引擎提供翻译支持

腾讯云小微IT领域专用引擎提供翻译支持

原文
Stack Overflow用户 修改于2012-02-05
  • 该问题已被编辑
  • 提问者: Stack Overflow用户
  • 提问时间: 2012-02-05 03:06

嘿,

我尝试从java应用程序转储postgresql数据库。

在cmd中,它运行正常:

pg_dump -U user database>outfile.sql 

和CMD提示输入密码

要从我的java访问此命令行:

Runtime.getRuntime().exec("pg_dump -U user database>outfile.sql"); 

现在它在等待密码。

我用 Runtime.getRuntime().exec(String[])... 试过了,但是什么都没有。

不知何故,我必须在 .exec() 方法中设置参数'password‘,

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

浏览 211 关注 0 得票数 5
  • 得票数为Stack Overflow原文数据
原文

4 个回答

高票数
修改于2017-05-23
  • 该回答已被编辑
  • 回答者: Stack Overflow用户
  • 回答时间: 2012-02-05 03:09
得票数 0

您可以重定向流程的标准输入,如 this question 中所述。

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

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

回答于2012-02-05
得票数 2

谢谢麦克斯

我试过了

    Process p = Runtime.getRuntime().exec(cmd);
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));