我正在学习java.io。在read ()
方法文档中,我看到了定义:
方法返回输入字节的ASCII代码(0-255),并在文件末尾返回-1。
而且,据我所知,EOF的ASCII代码是26
。
那么,为什么read()
方法为EOF返回-1
而不是26
。-1
的返回值是什么意思?
还有一个问题:空字符(即NUL
)是什么,ASCII代码: 0用于什么?如果文件是空的(即没有数据),那么NUL字符是否存在?
发布于 2017-01-10 05:02:24
我看到了定义:"read ()方法返回输入字节的ASCII代码(0-255),并在文件末尾返回-1“。
这个定义是不正确的。read()
方法不返回ASCII。它返回字节,并且不对它们进行解释。对于二进制文件,它们绝对不是ASCII代码。
这是InputStream.read()
的真正定义.如javadoc中所定义的那样
"
public abstract int read() throws IOException
从输入流读取下一个字节的数据。在0到255范围内,值字节作为int返回。如果由于到达流的末尾而没有可用字节,则返回值-1。“
请注意,没有提到ASCII。
此外,据我所知,EOF的ASCII代码是26。
实际上,没有ASCII字符表示EOF。代码26 (CTRL)是ASCII的子字符.它在键盘输入中用于表示Windows上的EOF,但在其他上下文中则不使用。实际上,在Mac和Linux代码4(CTRL)上就有这个目的。
无论如何,从0到255的所有无符号字节值都是可能出现在文件中的有效数据值。有必要使用不同的值来表示EOF。
还有一个问题:空字符(NUL),ASCII代码: 0,用于什么?
各种各样的事情。实际上,应用程序选择用于的任何东西。
如果文件是空的(没有数据),那么NUL字符是否存在?
NUL字符不表示空文件,也不表示文件的结尾。
如果一个文件没有数据,那么它的长度将为零。文件长度是文件元数据的一部分,就像文件名、所有者和组、权限、创建时间戳等等一样。
https://stackoverflow.com/questions/41560812
复制相似问题