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

所属分类: 软件编程 / java 阅读数: 37
收藏 0 赞 0 分享

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的面向对象编程基本概念学习笔记整理

这篇文章主要介绍了Java的面向对象编程基本概念学习笔记整理,包括类与方法以及多态等支持面向对象语言中的重要特点,需要的朋友可以参考下
收藏 0 赞 0 分享

Eclipse下编写java程序突然不会自动生成R.java文件和包的解决办法

这篇文章主要介绍了Eclipse下编写java程序突然不会自动生成R.java文件和包的解决办法 的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

基于Java实现杨辉三角 LeetCode Pascal's Triangle

这篇文章主要介绍了基于Java实现杨辉三角 LeetCode Pascal's Triangle的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Java中Spring获取bean方法小结

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,如何在程序中获取Spring配置的bean呢?下面通过本文给大家介绍Java中Spring获取bean方法小结,对spring获取bean方法相关知识感兴趣的朋友一起学习吧
收藏 0 赞 0 分享

如何计算Java对象占用了多少空间?

在Java中没有sizeof运算符,所以没办法知道一个对象到底占用了多大的空间,但是在分配对象的时候会有一些基本的规则,我们根据这些规则大致能判断出来对象大小,需要的朋友可以参考下
收藏 0 赞 0 分享

剖析Java中的事件处理与异常处理机制

这篇文章主要介绍了Java中的事件处理与异常处理机制,讲解Java是如何对事件或者异常作出响应以及定义异常的一些方法,需要的朋友可以参考下
收藏 0 赞 0 分享

详解Java的Struts2框架的结构及其数据转移方式

这篇文章主要介绍了详解Java的Struts2框架的结构及其数据转移方式,Struts框架是Java的SSH三大web开发框架之一,需要的朋友可以参考下
收藏 0 赞 0 分享

Java封装好的mail包发送电子邮件的类

本文给大家分享了2个java封装好的mail包发送电子邮件的类,并附上使用方法,小伙伴们可以根据自己的需求自由选择。
收藏 0 赞 0 分享

在Java的Struts中判断是否调用AJAX及用拦截器对其优化

这篇文章主要介绍了在Java的Struts中判断是否调用AJAX及用拦截器对其优化的方法,Struts框架是Java的SSH三大web开发框架之一,需要的朋友可以参考下
收藏 0 赞 0 分享

java多线程Future和Callable类示例分享

JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。今天我们就来研究下Future和Callab
收藏 0 赞 0 分享
查看更多