read返回值问题

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

you_nice

2015-07-25 22:35

...

int bytes = in.read(buf, 0, buf.length); 

int j = 1;

for(int i = 0; i < bytes; i++){  //文件字节数小于buf容量应该返回-1,那为什么循环还可以执行下去啊啊啊啊啊啊啊啊啊 

...

写回答 关注

2回答

  • 好帮手慕珊
    2015-07-27 10:38:40
    已采纳

    这个方法如果读到文件末尾才返回-1呢,否则应该返回的是读取的字节数。

    you_ni...

    对的!谢谢解答! 我本来想如果buf.length大于文件大小的话,那么int bytes = in.read(buf, 0, buf,length)读到文件末尾了,byte不是应该等于-1么,i == 0 > bytes == -1, 那for循环应该就不执行了,可是结果for循环还是执行了,而且输出了buf.length个字节。 然后看看源码就懂了,原来是第一次read()的时候读到了文件末尾才返回 -1,后面的read()如果读到了文件末尾的话就还是返回读到的字节数!

    2015-07-27 16:28:30

    共 1 条回复 >

  • 鲜衣
    2015-07-30 15:34:39

    请问视频中,定义了int bytes=0;为什么后面还用if(int i=0;i<bytes;i++){}

    而且还可以读取出内容来。

    谢谢你!

    鲜衣 回复you_ni...

    哈哈。看漏了,谢谢你!

    2015-07-30 20:26:10

    共 2 条回复 >

文件传输基础——Java IO流

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

133754 学习 · 1030 问题

查看课程

相似问题