介绍
本篇文章为大家展示了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。缓冲区原理图解强>
<强> 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 nulljava中字符流缓冲区的作用是什么