详解java IO流之缓冲流的使用

发布时间 - 2026-01-10 22:30:25    点击率:

java缓冲流本身不具IO功能,只是在别的流上加上缓冲提高效率,像是为别的流装上一种包装。当对文件或其他目标频繁读写或操作效率低,效能差。这时使用缓冲流能够更高效的读写信息。因为缓冲流先将数据缓存起来,然后一起写入或读取出来。所以说,缓冲流还是很重要的,在IO操作时记得加上缓冲流提升性能。

缓冲流分为字节和字符缓冲流

字节缓冲流为:

BufferedInputStream—字节输入缓冲流

BufferedOutputStream—字节输出缓冲流

字符缓冲流为:

BufferedReader—字符输入缓冲流

BufferedWriter—字符输出缓冲流

下面主要介绍这四种缓冲流的使用。

 一.  字节缓冲流

1.BufferedOutputStream—字节输出缓冲流

BufferedOutputStream类实现缓冲的输出了,通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,而不必每一个字节写入都调用底层系统。

示例代码:

public static void main(String[] args) { 
 try { 
 //创建字节输出流实例 
 OutputStream out=new FileOutputStream("L:\\test.txt"); 
 //根据字节输出流构建字节缓冲流 
 BufferedOutputStream buf=new BufferedOutputStream(out); 
 String data="好好学习,天天向上"; 
 buf.write(data.getBytes());//写入缓冲区 
 buf.flush();//刷新缓冲区,即把内容写入 
 //关闭流 
 buf.close();//关闭缓冲流时,也会刷新一次缓冲区 
 out.close(); 
} catch (IOException e) { 
 e.printStackTrace(); 
} 
 }

2.BufferedInputStream—字节输入缓冲流

BufferedInputStream为别的输入流添加缓冲功能,在创建BufferedInputStream时会创建一个内部缓冲数组,用于缓冲数据,提高性能。

示例代码:

public static void main(String[] args) { 
 try { 
 //创建字节输入流实例 
 InputStream in=new FileInputStream("L:\\test.txt"); 
 //根据字节输入流构建字节缓冲流 
 BufferedInputStream buf=new BufferedInputStream(in); 
 byte[]bytes=new byte[1024]; 
 //数据读取 
 int len=-1; 
 StringBuffer sb=new StringBuffer(); 
 while((len=buf.read(bytes))!=-1) 
 { 
 sb.append(new String(bytes,0,len)); 
 } 
 System.out.println("内容为:"+sb); 
 //关闭流 
 buf.close(); 
 in.close(); 

 } catch (IOException e) { 
 e.printStackTrace(); 
 } 
 } 

二.  字符缓冲流

1.BufferedWriter—字符输出缓冲流

将文本写入字符输出流,缓冲各个字符,从而提供高效的写入。可以指定缓冲区的大小,一般情况下,默认的缓冲区大小就足够了。

示例代码:

public static void main(String[] args) { 
 try { 
 Writer w=new FileWriter("L:\\test.txt"); 
 //根据字符输出流创建字符缓冲流 
 BufferedWriter buf=new BufferedWriter(w); 
 //写入数据 
 buf.write("只要功夫深铁杵磨成针"); 
 //刷新流 
 buf.flush(); 
 //关闭流 
 buf.close(); 
 w.close(); 
 } catch (IOException e) { 
 e.printStackTrace(); 
 } 
 } 

2.BufferedReader—字符输入缓冲流

从字符输入流中读取信息,缓冲各个字符,从而实现高效读取。可以指定缓冲区的大小,一般情况下,默认的缓冲区大小就足够了。默认大小为8192.

示例代码:

public static void main(String[] args) { 
 try { 
 Reader r=new FileReader("L:\\test.txt"); 
 //根据字符输入流创建字符缓冲流 
 BufferedReader buf=new BufferedReader(r); 
 char [] data=new char[512]; 
 //数据读取 
 int len=-1; 
 StringBuilder sb=new StringBuilder(); 
 while((len=buf.read(data))!=-1) 
 { 
 sb.append(new String(data,0,len)); 
 } 
 System.out.println("内容是: "+sb); 
 //关闭流 
 buf.close(); 
 r.close(); 
 } catch (IOException e) { 
 e.printStackTrace(); 
 } 
 } 

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# java  # IO流  # 缓冲流  # Java中的缓冲流详细解析  # Java的字节缓冲流与字符缓冲流解析  # Java学习之缓冲流的原理详解  # java 实现字节流和字节缓冲流读写文件时间对比  # Java字节缓冲流原理与用法详解  # Java IO流之字符缓冲流实例详解  # java使用缓冲流复制文件的方法  # Java中缓冲流的使用与性能提升(让文件操作更高效)  # 也会  # 很重要  # 或其他  # 足够了  # 天天向上  # 先将  # 装上  # 创建一个  # 好好学习  # 就可以  # 应用程序  # 提高效率  # 这四  # 而不必  # 即把  # 只是在  # 只要功夫深铁杵磨成针  # args  # OutputStream  # pre 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Python并发异常传播_错误处理解析【教程】  如何快速完成中国万网建站详细流程?  如何在景安服务器上快速搭建个人网站?  Laravel Docker环境搭建教程_Laravel Sail使用指南  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  免费视频制作网站,更新又快又好的免费电影网站?  Android 常见的图片加载框架详细介绍  微信推文制作网站有哪些,怎么做微信推文,急?  IOS倒计时设置UIButton标题title的抖动问题  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  android nfc常用标签读取总结  如何在阿里云部署织梦网站?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  Java类加载基本过程详细介绍  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  如何在IIS7中新建站点?详细步骤解析  Swift中swift中的switch 语句  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  Python3.6正式版新特性预览  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  Windows Hello人脸识别突然无法使用  Linux系统运维自动化项目教程_Ansible批量管理实战  利用vue写todolist单页应用  Bootstrap CSS布局之列表  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  python中快速进行多个字符替换的方法小结  如何在七牛云存储上搭建网站并设置自定义域名?  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  使用spring连接及操作mongodb3.0实例  Linux网络带宽限制_tc配置实践解析【教程】  如何快速搭建二级域名独立网站?  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  JS中对数组元素进行增删改移的方法总结  如何在云虚拟主机上快速搭建个人网站?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  Python文件异常处理策略_健壮性说明【指导】  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  高端建站如何打造兼具美学与转化的品牌官网?