转载

教你完全理解IO流里的 read(),read(byte[]),read(byte[],int off,int len)以及write

好的我们先来讲它们的作用,然后再用代码来实现给大家看


  • read():

    1.从读取流读取的是一个一个字节

    2.返回的是字节的(0-255)内的字节值

    3.读一个下次就自动到下一个,如果碰到-1说明没有值了.


  • read(byte[] bytes)

    1.从读取流读取一定数量的字节,如果比如文件总共是102个字节

    2.我们定义的数组长度是10,那么默认前面10次都是读取10个长度

    3.最后一次不够十个,那么读取的是2个

    4.这十一次,每次都是放入10个长度的数组.


  • read(byte[] bytes,int off ,int len)

    1.从读取流读取一定数量的字节,如果比如文件总共是102个字节

    2.我们定义的数组长度是10,但是这里我们写read(bytes,0,9)那么每次往里面添加的(将只会是9个长度),就要读12次,最后一次放入3个.

    3.所以一般读取流都不用这个而是用上一个方法:read(byte[]);


下面讲解write


  • write(int i);

    直接往流写入字节形式的(0-255)int值.


  • write(byte[] bytes);

    往流里边写入缓冲字节数组中的所有内容,不满整个数组长度的”空余内容”也会加入,这个下面重点讲,


  • write(byte[] bytes,int off,int len);

    1.这个是更严谨的写法,在外部定义len,然后每次len(为的是最后一次的细节长度)都等于流往数组中存放的长度

    2.如上述read(bytes),前面每次都放入十个,