缓冲流本身不具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(); } }
运行结果:
相关推荐
2、常用21个IO流:FileWriter、FileReader、CharArrayReader、CharArrayWriter、CharSequence、OutputStreamWriter、FileOutputStream、InputStreamReader、PrintWriter、BufferedReader、InputStream、...
本文主要介绍了java的IO流中的缓冲流的使用,缓冲流分为字节和字符缓冲流。分享了有关它们的实例代码,具有一定的参考价值,下面跟着小编一起来看下吧
该代码源码资源是一个用于讲解Java IO流的示例代码库。它包含了常见的IO类和方法的使用示例,旨在帮助理解和掌握Java中的输入输出操作。 包含: File 类、RandomAccessFile 类、字节流(文件字节流、缓冲字节流、...
JavaIO实例,包括:字节流、字符流、缓冲流、转换流
595.593.JAVA基础教程_IO流-缓冲流(字节型)实现非文本文件的复制(595).rar
java IO流 1. 流的概念 2. 输入流和输出流 3. 字符流、字节流 4. 缓冲流 5. 转换流处理流
Java中IO流实例,包括:字节流、字符流、缓冲流、转换流的操作。
主要介绍了Java IO流之字符缓冲流,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Java IO流学习总结 Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据...
24_IO_第3天(转换流、缓冲流)_讲义
day21_缓冲流、转换流、序列化流、Commons IO.pdf
这是关于java各个IO流,从节点流到装饰缓冲流的一系列笔记纲要,帮助更好的理解和学习java的IO流
主要介绍了Java IO字符流缓冲区实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
主要介绍了Java IO学习之缓冲输入流(BufferedInputStream)的相关资料,需要的朋友可以参考下
一、 什么是IO流 一般情况下是按照当前程序使用的内存为参照物来考虑数据的走向问题。 以文件操作为例 从内存中保存数据到硬盘 output 从硬盘中读取数据到内存 input 看视频,缓冲 使用缓冲可以让用户体验提高,相对...
IO流中关闭和刷新的区别 因为内置缓冲区的原因,如果不关闭输出流,无法写出字符到文件中,但是关闭的流对象,是无法继续写出数据的,如果我们既想写出数据,又想继续使用流,就需要使用flush方法了 flush : 刷新...
输入流和输出流 字节流和字符流 缓冲区 装饰设计模式
InputStream和OutputStream 1.DataInputStream,DataOutputStream 从Stream里读取基本类型的数据 BufferedReader,BufferedWriter...2.BufferedInputStream,BufferedOutputStream 封装了从缓冲区读写指定数量数据的方法
主要做了对JAVA-IO流主要类的操作demo,包括了对TXT文件的操作,主要是对博客http://blog.csdn.net/yczz/article/details/38761237的代码重现,方便阅读,供以后开发参考。