问答详情
源自:4-2 字节流之文件输入流FileInputStream-2

为什么拿字节个数和-1进行比较

视频第7分30开始,老师开始考虑字节数组不够存放的情况。这里的判断条件是:

(bytes = in.read(buf, 0, buf.length))!=-1;既然前面说了bytes返回的是字节个数。

那么我认为比较条件不该是这样么?

(bytes = in.read(buf, 0, buf.length))> 20*1024

提问者:JustV 2016-12-22 10:02

个回答

  • pergod
    2016-12-22 16:19:22
    已采纳

    bytes是读取到字节的长度,如果因为流位于文件末尾而没有 可用 的字节,则返回值 -1。(bytes = in.read(buf, 0, buf.length))> 20*1024,如果这样设置的话,后面已经没有可用的字节还是会继续读入,这样会异常吧。

  • JustV
    2016-12-22 16:25:34

    "因为流位于文件末尾而没有 可用 的字节,则返回值 -1。"这个很关键,老师貌似没这么说,还是我听漏了?只知道他说过指针读取到文件末尾会返回-1。看样子这个“文件末尾返回-1”是适用所有IO流中的方法的咯