int b = in.read(); 这句代码执行后,b 表示读取到的字节。
int bytes = in.read(buf,0,buf.length);执行后,bytes表示的是读到的字节个数。
是方法就是这样定义的吗?
这两个的差别,实际上是read()方法两种重载方式的差别。
in.read()表示单字节读取,相当于一滴一滴水(字节)地去洒
in.read(byte[] buf ,int start ,int size )表示字节先读取到buf缓冲区,start表示缓冲区的起始位置,size表示存入缓冲区的大小。这种方式相当于先把一滴一滴水(字节)放到一个桶(buf)里,当然这个桶肯定有大小(size),当桶里的水达到一定程度(缓冲区的极限)时,再将整个桶里的水洒出去。
授人以鱼不如授人以渔
详细课程可以去看看 慕课网Java专题的 【文件传输基础 Java I/O 流】
http://www.imooc.com/learn/123