java中字符流缓冲区的作用是什么

  介绍

本篇文章为大家展示了java中字符流缓冲区的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

<强> 1。为什么要缓冲区?

程序频繁地操作一个资源(如文件),则性能会很低,此时为了提升性能,就可以将一部分数据暂时读入到内存的一块区域中,以后直接从此区域中读取数据即可,因为读内存速度比较快,这样提高性能。在IO中引入缓冲区,主要是提高流的读写效率。

<强> 2。缓冲技术的原理?

总的来说,缓冲区就是内存里的一块区域,把数据先存内存里,然后一次性写入,类似数据库的批量操作,这样效率比较高

<强> 3。BufferedWriter类

①。定义

public  class  BufferedWriter  extends 作家

将文本写入字符输出流,缓冲各个字符,从而提供单个字符,数组和字符串的高效写入。

②。常用的方法:

//,关闭此流,但要先刷新它,实际上调用了作家类的密切的方法,   public  void  close (), throws  IOException //,刷新该流的缓冲,   public  void 冲洗(),throws  IOException //,写入一个行分隔符。行分隔符字符串由系统属性,line.separator 定义,   public  void 换行符(),throws  IOException //,写入字符数组的某一部分,   public  void 写(char [], cbuf,, int ,, int 兰),throws  IOException //,写入单个字符,   public  void 写(int  c), throws  IOException

4。BufferedReader类

①。定义:

public  class  BufferedReader  extends 读者

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

②。常用的方法:

//,关闭该流并释放与之关联的所有资源,   public  void  close (), throws  IOException //,读取一个文本行。通过下列字符之一即可认为某行已终止:换行,(& # 39;\ n # 39;),回车,(& # 39;\ " # 39;),或回车后直接跟着换行,   public  String  readLine (), throws  IOException //,将字符读入数组的某一部分,   public  int 阅读(char [], cbuf,, int ,, int 兰),throws  IOException //,读取单个字符,   public  int  read (), throws  IOException

范例:通过缓冲区复制一个文本文件

File  source =, new 文件(“Demo.txt");,   if  (! source.exists ()), {,   ,,返回;   },   BufferedWriter  BufferedWriter =零;祝福;   BufferedReader  BufferedReader =零;祝福;   {try    bufferedReader 才能=,new  BufferedReader (new  FileReader(源)),,   时间=bufferedWriter 才能;new  BufferedWriter (new  FileWriter (“Demo_copy.txt")),,   String 才能;line =,零,,   while 才能;((line =, bufferedReader.readLine ()), !=, null), {,   ,,,bufferedWriter.write(线),,   ,,,bufferedWriter.newLine();,,//,换行,   ,,,bufferedWriter.flush();,,,//将缓冲区数据刷到指定文件中,   ,,},   },catch  (Exception  e), {,   throw 才能;new  RuntimeException(“文件复制失败!“),,   {},finally //,才能关闭,bufferedWriter 和,bufferedReader    }

<强> 5。缓冲区原理图解

癹ava中字符流缓冲区的作用是什么"

<强> 6。根据原理图,自定义缓冲类

, public  class  MyBufferedRead  extends 读者{,/* *,才能   ,,*,缓冲区在定义时被缓冲的流对象,   ,,*/,   private 才能Reader 阅读,   ,   private 才能;char [], buffer =, new  char [1024];,//才能,用于记录存储到缓冲区中字符个数的变量,   private 才能int  count =, 0;,//才能,用于操作数据中元素的角标,   private 才能int  pos =, 0;,   ,   public 才能;MyBufferedRead (Reader 阅读),{,   ,,,this.read =,读,,   ,,},   ,/* *,才能   ,,*,定义一个读取方法,从缓冲区中读取一个字符,   ,,*/,   public 才能;int  myRead (), throws  IOException  {,   ,,,//,读取一批数据到缓冲数据缓冲区中,   ,,,if  (count ==, 0), {,   ,,,,,count =, read.read (),,   ,,,,,pos =, 0;,   ,,,},   ,   ,,,if  (count  & lt;, 0),   ,,,,,return  1;,   ,   ,,,char  ch =,缓冲(pos),,   ,,,,pos + +;   ,,,计数,,   ,,,return  ch;,   ,,},   ,/* *,才能   ,,*,定义一个读取一行的方法,   ,,*/,   public 才能;String  myReadLine (), throws  IOException  {,   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

java中字符流缓冲区的作用是什么