当我在Eclipse中运行read()
并在控制台上输入chars后跟ENTER时,返回的值是输入的字节数,而不是-1
,尽管我输入控制台的字符串已终止通过ENTER,据我所知,生成流结束条件..
我能想到的唯一解释是,ENTER为控制台本身发出信号流结束信号,而不被read()
解释为EOF
答案 0 :(得分:2)
我输入控制台的字符串由ENTER终止,据我所知,生成流结束条件
不,按 Enter 不会生成流结束条件。根据您的操作系统,它通常是 Ctrl + d 或 Ctrl + z 。
此外,read
将返回它在第一次调用时读取的字节数,即使您结束控制台的流也是如此。当流已经关闭时,第二个调用将生成-1
。这种行为是正确的,否则您的程序将不会在流终止之前收到在控制台上输入的数据的“尾端”。