 
                    
                
         
    
    
    
	
	
		
    
    
        
            
            
            
                
1.字节缓冲流
字节缓冲流内部自带数组,用于提高读写效率
![]()
字节缓冲流本身不具备读写功能,还是需要依赖普通的字节流,字节缓冲流可以将普通字节流进行包装使用
![]()
2.字节缓冲流的使用
字节缓冲流和普通的字节流使用一模一样,通过构造方法创建字节缓冲流
![]()
字节缓冲流的构造方法要字节流接口,我们传入对应接口的子类
![]()
注意:在关流时,我们只需要关闭字节缓冲流即可,无须再关闭里面的字节流。
----字节流好比普通人,字节缓冲流则是化了妆的普通人,化了妆的普通人挂了,不就是普通人挂了吗
![]()
2.字节缓冲流原理
[1]缓冲输入流原理
首先,由普通流对象进行文件关联,再由字节缓冲流进行包装
![]()
字节缓冲流包装的方式就是在源码中创建一个8192大小的数组,当我们进行读取操作时,会一次性对文件读取8192个字节存满该数组
![]()
表面我们调用read是一次读一个字节,实际上是字节缓冲流一次性从文件中读8192个字节存到数组中,然后再拿出一个字节给我们
当数组中8192个字节都被我们使用完后,字节缓冲流就又会再获取8192个字节到数组中,如果没有8192个那就有多少获取多少
[2]缓冲输出流原理
普通流对象和文件进行关联,再由缓冲输出流对象进行包装
![]()
我们写出的字节会被存在数组中,当数组满了8192个字节后,就会一次性写出到文件中
![]()
3.字节缓冲流+自定义数组
普通流再进行读取操作时,可以通过自定义数组来提升读写速度,字节缓冲流也可以
![]()
输入流先和文件关联,然后缓冲输入流包装,一次性从文件中读取到8192个字节存到缓冲输入流的内置数组
![]()
接着走read方法,根据我们定义的数组大小取出对应个数的字节,而这些字节就是从内置数组中获取
![]()
![]()
取出的这8192个字节往何处走呢?--取出的8192个字节再存入到缓冲输出流的内置数组中
![]()
然后缓冲输出流的内置数组再一次性把8192个字节输出到文件上
![]()
我们自定义的数组起到的作用:作为中介,存入左侧内置数组取出的8192个字节,再把8192个字节传给右侧内置数组,大幅加快读写速度。
如果没有我们自定义的数组,按照刚开始写的代码,一个一个读,一个一个写,中间内存中,左侧数组传数据给右侧数组的速度就会慢很多
![]()
如果是单个读取,想在控制台看到读取的字节,直接输出接收变量
![]()
如果是多个读取,想在控制台看到读取的字节,输出我们自定义的中介数组
![]()
4.总结
我们使用普通类+自定义数组的速度也很快,只比缓冲流+自定义数组慢一点,而且用起来也更方便,所以缓冲流了解即可,平时还是使用普通类+数组即可
![]()
 
             
            posted @ 
2025-04-20 10:44 
直実 
阅读(
11) 
评论() 
 
收藏 
举报