听说用这个来从文件里读取字节数组的时候,可能实际读到的值比指定的值要少。
比如
long length = file.length();
byte[] bytes = new byte[(int)length];
int numRead = is.read(bytes, 0, bytes.length);
就是说这个得到的numRead会有可能比bytes.length小。
请问这种结果是会在怎样的状况下发生?我试了几次没试验出来。
比如
long length = file.length();
byte[] bytes = new byte[(int)length];
int numRead = is.read(bytes, 0, bytes.length);
就是说这个得到的numRead会有可能比bytes.length小。
请问这种结果是会在怎样的状况下发生?我试了几次没试验出来。
1.读时遇到EOF:假如你想从一个只有20个字节大小的文件里一下读出50个字节,肯定不会返回50个给你
2.从终端读文本行:如果打开的文件是和终端相关的,那么每个read函数将一次传送一个文本行,返回的不足值等于文本行的大小
3.读和写网络socket:内部缓冲约束和较长的网络延迟可能回导致read返回不足值.除了EOF,读磁盘文件将不会出现你所说的小于情况