我在文件User.java中有一个java片段
public class User{
public static void main(String d[]){
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String name = br.readLine();
System.out.println("Hello "+name);
}catch(IOException e){
e.printStackTrace();
}
}
}
接下来,我编写了另一个运行在程序之上的java程序,其主要功能内容如下。
Runtime runtime = Runtime.getRuntime();
Process proc1 = runtime.exec("javac MY_PATH/User.java");
Process proc2 = runtime.exec("java -cp MY_PATH User");
此代码适用于除需要输入之外的所有java代码段。我应该如何为readLine()提供输入;方法
答案 0 :(得分:0)
使用Process.getOutputStream()并在那里写入输入数据。
OutputStream out = proc2.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write("World");
writer.flush();
答案 1 :(得分:0)
您应该使用Process.getOutputStream()
方法。传递给此输出流的任何数据都将传递到User.java
main方法读取的标准输入流。
不要忘记为\n
写一个br.readLine();
字符来检测行尾。
答案 2 :(得分:0)
认为上面的答案是写的,我想为即将到来的用户生成代码:)下面的方法将接受所有输入集(如果我们为其他程序读取多个输入)并将它们写入bufferedWriter。
public static void giveInputToProcess(Process process, String[] inputs) {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
process.getOutputStream()));
for (String input : inputs) {
try {
bw.write(input);
bw.newLine();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}