IO流(缓冲流)

一,前言

掌握缓冲流的概念,掌握字节字符缓冲流的使用,掌握字符流读行方法,换行方法。

二,概念

缓存流也称为高效流,或者高级流。缓冲流自带缓冲区,可以提高原始字节流,字符流读写数据的性能。

BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter

三,字节缓冲输入流(BufferedInputStream)

在创建 BufferedInputStream 时,会创建一个内部缓冲区数组。缓冲区用以减少频繁的IO操作,提高程序的性能。

1.构造方法

 BufferedInputStream(InputStream in):
     创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。          
 BufferedInputStream(InputStream in, int size):
     创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。

2.常用方法

 void close():
     关闭此输入流并释放与该流关联的所有系统资源。 
 int read(byte[] b):
     从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。 

四,字节缓冲输出流(BufferedOutputStream)

在创建 BufferedInputStream 时,会创建一个内部缓冲区数组。缓冲区减少IO操作以提高性能。

1.构造方法

 BufferedOutputStream(OutputStream out):
     创建一个新的缓冲输出流,以将数据写入指定的底层输出流。
 BufferedOutputStream(OutputStream out, int size):
     创建一个新的缓冲输出流,以便以指定的缓冲区大小将数据写入指定的底层输出流。

2.常用方法

 void close():
     关闭此文件输出流并释放与此流相关联的任何系统资源。
 void write(byte[] b,int off,int len):
     将 b.length个字节从指定的字节数组写入此文件输出流。
 void flush():
     刷新此输出流并强制任何缓冲的输出字节被写出。 

五,字符缓冲输入流(BufferedReader)

从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。

1.构造方法

 BufferedReader(Reader in):
     创建一个使用默认大小输入缓冲区的缓冲字符输入流。 
 BufferedReader(Reader in, int sz):
     创建一个使用指定大小输入缓冲区的缓冲字符输入流。 

2.常用方法

 String readLine():
     读取一个文本行。 

六,字符缓冲输出流(BufferedWriter)

BufferedWriter使用装饰器模式,对Writer类的子类提供缓存机制。

1.构造方法

 BufferedWriter(Writer out):
     创建一个使用默认大小输出缓冲区的缓冲字符输出流。          
 BufferedWriter(Writer out, int sz):
     创建一个使用给定大小输出缓冲区的新缓冲字符输出流。 

2.常用方法

  void newLine():
     写入一个行分隔符。 

七,字符缓冲流的操作示例

例:

 public static void main(String[] args) {
         //创建缓冲流
         File file = new File("E:/aaaa.txt");
         File f = new File("C:\\Users\\29854\\Desktop\\aaa.txt");
         BufferedReader bd = null;
         BufferedWriter bw = null;
         try {
             bd = new BufferedReader(new FileReader(file));
             bw = new BufferedWriter(new FileWriter(f,true));
             //读写数据
             String str = null;  
             while ((str = bd.readLine()) != null) {         
                 bw.write(str);
                 bw.newLine();
                 bw.flush();
             }       
         } catch (FileNotFoundException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         } finally {
             //关流
             if (bd != null) {
                 try {
                     bd.close();
                 } catch (IOException e) {
                     e.printStackTrace();
                 }
             }
             if (bw != null) {
                 try {
                     bw.close();
                 } catch (IOException e) {
                     e.printStackTrace();
                 }
             }   
         }   
     }

八,附加(缓冲区的概念)

某些情况下,如果一个程序频繁地操作一个资源(如文件或数据库),则性能会很低; ​ 为了提升性能,就可以将一部分数据暂时读入到内存的一块区域之中,以后直接从此区域中读取数据即可,因为读取内存速度会比较快,这样可以提升程序的性能;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值