JAVA的IO流之缓冲流

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();  
        }  
          
     
    }   
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值