1、计算机里面对于文本文件,用EOF常量来表示,不同的操作系统可以能用的值不一样。
2、在Windows里面EOF的值是-1,底层的字节表示是11111111(8个1),如果你了解补码的话,就应该知道它表示的是-1了。
而对于其他的字符的Ascii,常用的是0-255,所以正常的文本数据里面不可能有8个1的字节。
3、当我们一个一个字节的读取文本时,每次读取的都是0-255之间的,突然读到8个1(-1),就知道文件结束了。
if(!( b=x.read())==-1){
//对b进行操作
}
当发现b=-1时,我们就不在操作b了,而是结束掉文件的读取。b里面的-1自然还没有取出来的
4、而你从键盘键入的-1,其实是2个字符,减号和1,
5要想输入-1,按ctrl +z,就相当于输入了一个-1,底层输入8个1。你在命令行,输入数据后,按ctrl+z,
输入流就结束,程序就同时结束了。
|