我可以假设仅当文件中没有足够的字节时,该方法才返回小于给定缓冲区限制的数字吗?
Javadoc说:
读取可能无法填充缓冲区
并举例说明
返回读取的字节数,可能为零;如果通道已到达流末尾,则返回-1。
这还不足以让您做出该假设。
实际上,从文件读取时,您很可能总会获得一个完整的缓冲区,以文件结尾方案为模。考虑到进行系统调用的开销,从OS实施的角度来看这很有意义。
但是,我也可以想象返回半空缓冲区的情况可能很有意义。例如,当通过慢速网络链接从本地安装的远程文件系统中读取数据时,返回部分填充的缓冲区,以便应用程序可以开始处理数据,这具有一些优势。
read在这种情况下,某些将来的OS可能会实现系统调用。如果假设您将始终获得完整的缓冲区,则当您的应用程序在(假设的)新平台上运行时,您可能会感到惊讶。
另一个问题是,有 有 一些种类的流在那里你会的 肯定
得到部分填充的缓冲区。套接字流,管道和控制台流是明显的示例。如果您使用文件流行为对应用程序进行编码,那么当有人针对另一种流运行应用程序而失败时,您可能会感到讨厌。



