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

来源:4-2 字节流之文件输入流FileInputStream-2

JustV

2016-12-22 10:02

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

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

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

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

写回答 关注

2回答

  • 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流中的方法的咯

    pergod

    对,可以查看一下API文档,任何继承了InputStream的类都是这样读入的

    2016-12-22 16:28:53

    共 1 条回复 >

文件传输基础——Java IO流

为您介绍IO流的使用,以及对象的序列化和反序列化的内容

133754 学习 · 1030 问题

查看课程

相似问题