process.getInputStream是用来读取控制台命令结果的
process.getOutputStream是用来往控制台写入参数的
@Test
public void test1() throws Exception {
Process process = Runtime.getRuntime().exec("native2ascii");
Scanner sc = new Scanner(System.in);
OutputStream out = process.getOutputStream();
out.write(("中国"+"\n").getBytes());
String str =null;
BufferedReader buffer = new BufferedReader(new InputStreamReader(process.getInputStream()));
while((str=(buffer.readLine()))!=null) {
System.out.println(str);
}
}
当我用以上的方法往native2ascii写入值的时候,Java控制台没有读到写入的值
然后查了不少资料
最后终于发现问题所在:
在out流写入的时候,终端控制台不知道是不是写入完成,需要用out.flush();和out.close();将输入的流进行关闭
然后问题解决
运行结果: