如题
FileInputStream fis = new FileInputStream("demo.mp4");
fis.read()与fis.read(byte[] b)有什么区别?
为什么说后者比前者效率更高?
我们知道前者一次读一个字节,后者一次读一个字节数组.
就像喝水,一次喝一滴喝一次喝一杯的区别,但是,一杯水的形成不还是得一滴一滴得积攒吗?
也就是说,后者一次读一个字符数组不还是要先一个一个的把字符读进数组里吗?
这样来看,后者仅仅是做了一个封装操作,这样怎么提高效率了呢?
看了一些资料,我的理解是.
如果是读一个,写一个.那就是从硬盘读n次,然后n次.
如是是读一批,写一批,那就是从硬盘读n次,然后放在内存中的这个字节数组b中,然后写一次,
假如有5个字节.加入byte[] b = new byte[5];
第一种方法read(),write(),需要读硬盘5次,写硬盘5次,
第二种方法read(b),write(new string(b,0,5)),需要读硬盘5次,写硬盘1次,如果字节很多,如果b的容量更大,这样效率优势会更加明显,因为一个是暂存到内存中,俗称缓冲区,然后集体写入.一个是读一个,写一个.