如何执行cmd命令行提示输入密码时使用java
问题描述:
我尝试从我的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()
方法设置的参数“密码”,
pg_dump的声明不接受它的命令行密码..
答
你可以重定向进程的标准输入,如描述this question。
本质上,它们使用Process.getInputStream
方法并写入此方法返回的流(例如使用BufferedWriter)。
您将获得exec()
方法返回的必需Process
对象。
答
感谢最多,
我想这
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\"");
所以黑提词与打开 '密码:'。写密码,按回车键,它就会熄灭。
这对我来说已经足够了。
谢谢
答
错过按“Enter”键。 这个修改对我来说有效:
bw.write("password" + "\n");