Java,为什么System.in.read()永远都不返回负1,没数据可读也只是堵塞?

2024-11-24 13:33:34
推荐回答(1个)
回答1:

一个输入流要read之后返回-1,是当他遇到文件结束符EOF的时候。

而System.in这个流一直未遇到文件结束符,所以他会认为此流中还会有数据,于是就阻塞了。
所以要想System.in.read()返回-1的话,需要给他一个文件结束符。
windows下控制台中文件结束符的表示为,在 空行 处按ctrl+z,
linux中则为ctrl+d

还有要注意,有些编译器的控制台不能够打出文件结束符,所以应该在操作系统的控制台中进行测试