看了InputStream和BufferedInputStream,实现缓冲其实就是定义的下面的这个字节数组
protected volatile byte buf[]; 问题是把数据读到这个字节数组里面不依然一个字节一个字节调用的InputStream.read()吗?!那节约效率是怎么来的呢?
------解决思路----------------------
我的理解是这样的,不用缓冲的话,也就是没有那个数组,是读一个字符,就要输出一下,读一个字符输出一下,但是如果读到缓冲区,那就可以把缓冲区读满然后输出一次,这样效率就提高了
------解决思路----------------------
上面说的有道理 就是为了减少次数 比如你想买点零食 每次去买一袋 买100次 和每次买10袋 买10次 肯定是后者效率高
不是说读的快 同样的硬件读肯定是一样的 而是交换的次数少
------解决思路----------------------
读一点 写一点 就相当于 硬盘磁头动一下 停一下 效率太低了
------解决思路----------------------
好形象啊,反正就是确保你在准备请求磁盘开始读取文件时,有足够的位置存放磁头一次访问读取到的数据,不要出现放不下丢弃的数据,因为磁头一次读取一个扇区的数据,至少 512字节,如果你装不下就丢弃了,下次重新再来一次,同样写出数据也是一样的过程,一次能写出一个扇区的数据,如果你数据不够分多次,磁头就需要多等物理设置转几圏 。