我想从Java执行命令,但是该命令希望我给它提供一个用户名。
像这个例子:
$我的命令
[命令]用户名:_
那么如何在Java中为命令提供用户名?
当前我的代码是这样的:
Process p = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String s;
while ((s = br.readLine()) != null){
System.out.println(s);
}
br.close();
p.waitFor();
p.destroy();
答案 0 :(得分:1)
您需要创建另一个线程并通过process#getOutputStream()
抽取用户输入。请参见以下示例:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
public class ProcessWithInput {
public static void main(String[] args) throws IOException, InterruptedException {
Process p = Runtime.getRuntime().exec("cat");
OutputStream os = p.getOutputStream();
os.write("Hello World".getBytes());
os.close();
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String s;
while ((s = br.readLine()) != null) {
System.out.println(s);
}
br.close();
p.waitFor();
p.destroy();
}
}
当然,您需要进行适当的错误/异常处理等。
其他选项是使用ProcessBuilder
,它允许您通过文件提供输入。