使用inputStream和OutputStream来读取和写入进程的数据

时间:2018-05-20 06:35:16

标签: java inputstream bufferedreader outputstream processbuilder

我目前正在运行.class文件作为流程。 .class文件是一个简单的程序,要求用户输入一个数字,接受输入并将用户的输入打印回屏幕。 到目前为止,我已设法通过InputStream从控制台上的进程打印“输入数字:”语句,并写入用户通过OutputStream输入的输入。我无法打印屏幕上的最后一个语句,应该是

  

“您输入了:”+ userinput

我的代码是:

String command [] = {"java" , "-cp", "C:\\Users\\Mahika\\Documents\\NetBeansProjects\\JavaTest\\compilerTest", "InputInteger"};
ProcessBuilder pb = new ProcessBuilder(command);
Process p = pb.start();
System.out.println("Process started");
BufferedReader br = new BufferedReader (new InputStreamReader(p.getInputStream()));
String output = null;

while((output = br.readLine()) != null){
    System.out.println(output);
    break;
}
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();

OutputStream os = p.getOutputStream();
PrintStream ps = new PrintStream(os);
os.write(i);
os.flush();  

我不知道如何再次使用InputStream来阅读“您输入的内容:”+ userinput。

2 个答案:

答案 0 :(得分:1)

这应该有效:

public static void main(String[] args) throws IOException {
    String command[] = {"java.exe", "-cp", "C:\\Users\\Mahika\\Documents\\NetBeansProjects\\JavaTest\\compilerTest", "InputInteger"};
    ProcessBuilder pb = new ProcessBuilder(command);
    Process p = pb.start();
    System.out.println("Process started");
    BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
    System.out.println(br.readLine());
    Scanner sc = new Scanner(System.in);
    int i = sc.nextInt();
    PrintStream ps = new PrintStream(p.getOutputStream(), true);
    ps.println(i);
    System.out.println(br.readLine());
}

只需确保InputInteger类中的输入提示由换行符完成(例如由println而不是print创建)。

答案 1 :(得分:-1)

我不太清楚你的问题,但据我所知,你应该只使用扫描仪等待用户输入他的文字,如下所示:

len