InputStream.read() 意外返回字节数而不是 -1



当我在 Eclipse 中运行read()并在控制台上输入字符后跟 Enter 时,返回的值是输入的字节数,而不是-1,尽管我输入控制台的字符串由 ENTER 终止,据我了解,它会生成流结束条件。

我能想到的唯一解释是 ENTER 发出控制台本身的流结束信号,而不会被read()解释为 EOF。

我在控制台中输入的字符串被 ENTER 终止,据我了解,它会生成流结束条件

否,按Enter不会生成流结束条件。根据您的操作系统,它通常是 Ctrl+dCtrl+z

此外,即使您结束控制台的流,read也会返回它在第一次调用时读取的字节数。当流已经关闭时,第二个调用将产生-1。此行为是正确的,否则程序将不会收到在流终止之前在控制台上输入的数据的"尾端"。

最新更新