【问题标题】:Using inputStream and OutputStream to read and write data to a process使用 inputStream 和 OutputStream 向进程读写数据
【发布时间】:2018-10-30 03:12:38
【问题描述】:

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

"你输入了:" + 用户输入

我的代码是:

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 来读取“您输入:”+用户输入。

【问题讨论】:

    标签: java inputstream bufferedreader outputstream processbuilder


    【解决方案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 创建)。

    【讨论】:

      【解决方案2】:

      我不太确定是否理解您的问题,但据我所知,您应该只使用扫描仪等待用户输入他的文本,如下所示:

      public static void main(String[] args) {
          Scanner sc = new Scanner(System.in);
          int i = sc.nextInt();
          System.out.println("you entered: " + i);
      }
      

      【讨论】:

        猜你喜欢
        • 2012-04-30
        • 1970-01-01
        • 2011-08-13
        • 2019-06-12
        • 1970-01-01
        • 2018-02-25
        • 2012-08-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多