java的 IO流之缓冲流(转载)

java缓冲流本身不具IO功能,只是在别的流上加上缓冲提高效率,像是为别的流装上一种包装。当对文件或其他目标频繁读写或操作效率低,效能差。这时使用缓冲流能够更高效的读写信息。因为缓冲流先将数据缓存起来,然后一起写入或读取出来。所以说,缓冲流还是很重要的,在IO操作时记得加上缓冲流提升性能。
       缓冲流分为字节和字符缓冲流
字节缓冲流为:
BufferedInputStream—字节输入缓冲流
BufferedOutputStream—字节输出缓冲流
字符缓冲流为:
BufferedReader—字符输入缓冲流
BufferedWriter—字符输出缓冲流
下面主要介绍这四种缓冲流的使用。
一.字节缓冲流
1.BufferedOutputStream—字节输出缓冲流
      BufferedOutputStream类实现缓冲的输出了,通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,而不必每一个字节写入都调用底层系统。
 
示例代码:
  1. public static void main(String[] args) {
  2. try {
  3. //创建字节输出流实例
  4. OutputStream out=new FileOutputStream("L:\\test.txt");
  5. //根据字节输出流构建字节缓冲流
  6. BufferedOutputStream buf=new BufferedOutputStream(out);
  7. String data="好好学习,天天向上";
  8. buf.write(data.getBytes());//写入缓冲区
  9. buf.flush();//刷新缓冲区,即把内容写入
  10. //关闭流
  11. buf.close();//关闭缓冲流时,也会刷新一次缓冲区
  12. out.close();
  13. } catch (IOException e) {
  14. e.printStackTrace();
  15. }
  16. }
2.BufferedInputStream—字节输入缓冲流
       BufferedInputStream为别的输入流添加缓冲功能,在创建BufferedInputStream时会创建一个内部缓冲数组,用于缓冲数据,提高性能。
 
示例代码:
  1. public static void main(String[] args) {
  2. try {
  3. //创建字节输入流实例
  4. InputStream in=new FileInputStream("L:\\test.txt");
  5. //根据字节输入流构建字节缓冲流
  6. BufferedInputStream buf=new BufferedInputStream(in);
  7. byte[]bytes=new byte[1024];
  8. //数据读取
  9. int len=-1;
  10. StringBuffer  sb=new StringBuffer();
  11. while((len=buf.read(bytes))!=-1)
  12. {
  13. sb.append(new String(bytes,0,len));
  14. }
  15. System.out.println("内容为:"+sb);
  16. //关闭流
  17. buf.close();
  18. in.close();
  19. } catch (IOException e) {
  20. e.printStackTrace();
  21. }
  22. }
二.字符缓冲流
 
1.BufferedWriter—字符输出缓冲流
    将文本写入字符输出流,缓冲各个字符,从而提供高效的写入。可以指定缓冲区的大小,一般情况下,默认的缓冲区大小就足够了。
 
示例代码:
  1. public static void main(String[] args) {
  2. try {
  3. Writer w=new FileWriter("L:\\test.txt");
  4. //根据字符输出流创建字符缓冲流
  5. BufferedWriter buf=new BufferedWriter(w);
  6. //写入数据
  7. buf.write("只要功夫深铁杵磨成针");
  8. //刷新流
  9. buf.flush();
  10. //关闭流
  11. buf.close();
  12. w.close();
  13. } catch (IOException e) {
  14. e.printStackTrace();
  15. }
  16. }
2.BufferedReader—字符输入缓冲流
         从字符输入流中读取信息,缓冲各个字符,从而实现高效读取。可以指定缓冲区的大小,一般情况下,默认的缓冲区大小就足够了。默认大小为8192.
示例代码:
  1. public static void main(String[] args) {
  2. try {
  3. Reader r=new FileReader("L:\\test.txt");
  4. //根据字符输入流创建字符缓冲流
  5. BufferedReader buf=new BufferedReader(r);
  6. char [] data=new char[512];
  7. //数据读取
  8. int len=-1;
  9. StringBuilder sb=new StringBuilder();
  10. while((len=buf.read(data))!=-1)
  11. {
  12. sb.append(new String(data,0,len));
  13. }
  14. System.out.println("内容是: "+sb);
  15. //关闭流
  16. buf.close();
  17. r.close();
  18. } catch (IOException e) {
  19. e.printStackTrace();
  20. }
  21. }
上一篇:java框架之SpringBoot(11)-缓存抽象及整合Redis


下一篇:测者的测试技术手册:分清Java的Override和Overload