bufferreader与bufferwrite以及用法与readline()方法原理自述总结

来源:互联网 发布:首都经济贸易大学 知乎 编辑:程序博客网 时间:2024/04/30 19:58

缓存可以说是I/O的一种性能优化。缓存流为I/O流增加了内存缓存区。有了缓存区,使得在流上执行skip()、mark()、reset()、方法都成为可能。

特点:

缓存区的出现提高了对数据读写的效率。

缓存区要结合流才能实现。

缓存区在流的基础上对流的功能进行了加强。

BufferedReader:

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

构造方法:

BufferedReader(reader in)

创建一个默认大小输入缓存区的字符输入流

BufferedReader(reader in, int sz)


创建一个给定大小输入缓存区的字符输入流

方法:


read();读取单个字符

read(char[] chuf, int off , int len );将字符读入数组的某一部分

readLine();读取一个文本行


实例:


import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;public class Bufferedreader {public static void main(String[] args) throws IOException {FileReader fr = new FileReader("D:\\1.txt");BufferedReader br = new BufferedReader(fr);String str = null;
//                      <span style="background-color: rgb(240, 240, 240);">到NULL的时候,说明读到末尾</span>while((str=br.readLine())!=null){System.out.println(str);}br.close();}}

用BufferedReader写的一个小demo,用readLine()方法一行一行读取数据,方便对文本数据的获取,到NULL的时候,说明读到末尾。然后打印数据,最后关闭缓冲流。

readline()方法原理:


readline()的底层实现也是read()方法,也是一次读一个的方法。当readline()读取一个一个的数据暂时取到自己封装的数组当中,当取到换行符的时候,自动把以上取到的数组变成一个字符串,输出出来。

BufferedWriter:

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

构造方法:


BufferedWriter(writer out)

创建一个默认大小输出缓存区的字符输出流


BufferedWriter(writer out , int sz)

创建一个给定大小输出缓存区的字符输出流


方法:

close()——关闭缓存区字符输出流


flush()——刷新流缓存数据,实时更新


write()——写入字符

newLine()——写入一个行分隔符,也是该缓存区中提供一个快平台的换行符

实例:


import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;public class Bufferedwriter {public static void main(String[] args) throws IOException {//字符写入流FileWriter fw = new FileWriter("D:\\1.txt");//缓冲输出流BufferedWriter bw = new BufferedWriter(fw);//输出字符串bw.write("asdflkjasdlfjla");//刷新缓冲流bw.flush();//关闭缓冲流bw.close();}}



用法:

用缓冲区复制文件。

</pre><pre name="code" class="java"><pre name="code" class="java"><pre name="code" class="java">public class CopyText {public static void main(String[] args) {// 声明缓冲输入输出BufferedReader bis = null;BufferedWriter bos = null;// 可能有异常 要try catchtry {// 创建缓冲输入,写出根路径bis = new BufferedReader(new FileReader("D:\\1.txt"));// 创建缓冲输出,写出复制文件路径bos = new BufferedWriter(new FileWriter("D:\\2.txt"));// 判断文件字节是否完结,无则继续写入复制文件。String line = null;while ((line=bis.readLine())!=null) {//读取写入bos.write(bis.read());bos.flush();}} catch (Exception e) {e.printStackTrace();} finally {// 关闭输入流
try {if (bis!=null) {bis.close();}} catch (IOException e) {e.printStackTrace();}// 关闭输出流try {if (bos!=null) {bos.close();}} catch (IOException e) {e.printStackTrace();}}}}
0 0
原创粉丝点击