Java:输入Stream中的垃圾

时间:2016-03-11 16:47:48

标签: java runtime

我转动了一个调用另一个Java程序并显示其输入的小型java函数。

private static void call() throws Exception 
{
    int  line;                             
    ///Other stuff here
    Process p2= Runtime.getRuntime().exec("java SelfModifying");
    InputStream is = p2.getInputStream();
    //p.waitFor();
    while ((line = is.read()) != -1) {
        System.out.println("result: " + line);
    }       
    Runtime.getRuntime().exit(0);
}

gests调用的prorgam应该返回一个int值:'10' 相反,我得到4行: 结果:49 结果:48 结果:13 结果:10

其他三个值来自哪里?它们是确定性的,但似乎来自输入。当我自己运行程序时,它不返回这3行。

1 个答案:

答案 0 :(得分:2)

您正在从流中读取单个字节:

  • 49是ASCII '1';
  • 48是ASCII '0';
  • 13是ASCII '\r';
  • 10是ASCII '\n'

所以文件的内容是10\r\n(10,后面是一个windows换行符)。

你应该将is包裹在扫描仪中:

Scanner scanner = new Scanner(is, "UTF-8");
System.out.println(scanner.nextInt());