PushbackInputStream read()不返回-1

时间:2014-09-20 13:33:03

标签: java io

在read()方法的Java API中,http://docs.oracle.com/javase/7/docs/api/java/io/PushbackInputStream.html

read()方法返回输入流中的下一个数据字节。

然后就是这个有用的功能:

 Returns:
      the next byte of data, or -1 if the end of the stream has been reached.

我发现当输入流到达所述输入的末尾时,手动输入任意输入到控制台不会返回-1。例如,我可以输入(+ 1 2)。代码将读取输入,将元素放入标记并解析它就好了。

然而,当它在换行后到达输入的末尾(ASCII十进制代码:10)。 read()不返回-1。我需要-1才能阻止解析器执行更多操作。它不会返回-1,而只是提示用户在控制台中输入新内容。

经过一番思考后,我认为只有在检测到EOF时才会返回-1,这只能通过输入文件完成,而不能在控制台中手动输入。这听起来不错吗?是否有任何技巧,如将EOF插入控制台输入,以便输入流read()实际上会返回-1?

或者我应该开始使用输入文件吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试输入Ctrl+Z: "It is also used to signal an end-of-file on some operating systems."

不,只是开始使用输入文件听起来不对。输入流可以从各种设备获得,如网络接口,USB端口,键盘,鼠标,HDD(文件),A / D转换卡等。