【java的 IO流之缓冲流】
2015-05-22 16:44
225 查看
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中的io流(输入输出流,序列化与反序列化,字节流 , 字符流,包装流,缓冲流)
- 【JAVA开发之IO流1-3】IO流之缓冲流
- Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream
- Java学习笔记之IO流中的缓冲流
- Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream
- Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter
- java基础学习IO流之缓冲流 十一 -5
- java IO流之三 使用缓冲流来读写文件
- 黑马程序员——JAVA基础------IO流(四)----字节字符转换流和缓冲流
- JAVA基础学习day20--IO流二-缓冲流、字节流
- Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter
- java笔记八:IO流之字符流与字符缓冲流
- Java IO流 将字节流转换成字符流在转换成缓冲流
- java IO流之三 使用缓冲流来读写文件
- JAVA IO流之缓冲流 序列化流 详解
- java笔记八:IO流之字符流与字符缓冲流
- 【java的 IO流之缓冲流】
- java IO流之三 使用缓冲流来读写文件
- Java IO(二):IO流——处理流——缓冲流