java核心技术之IO流(五)BufferedReader和BufferedWriter

来源:互联网 发布:如何查淘宝买家信誉 编辑:程序博客网 时间:2024/06/13 11:00

这里写图片描述

简单的说明

一般小的字符(char)文件的读取和写入数据,我们使用FileReader和FileWriter类就可以实现了,但是对于大的字符(char)文件的读取和写入数据,性能就会有很大的问题,我们一般选择BufferedReader和BufferedWriter来处理,也就是说BufferedReader和BufferedWriter主要的目的是提高字符(char)文件的内容读取和写入的性能。

BufferedReader和BufferedWriter

BufferedReader类

构造方法:
BufferedReader(Reader in)
创建一个有8192的字符(char)的缓存区
BufferedReader(Reader in, int size)
创建一个有size大小字符(char)的缓存区

关键方法:
read()
read(char[] buffer, int offset, int length)
readLine()——读取一行数据

常用使用方式:

BufferedReader buf = new BufferedReader(new FileReader("file.java"));

BufferedWriter类

构造方法:
BufferedWriter(Writer out)
创建一个有8192的字符(char)的缓存区
BufferedWriter(Writer out, int size)
创建一个有size大小字符(char)的缓存区

关键方法:
write(int oneChar)
write(String str, int offset, int count)
write(char[] buffer, int offset, int count)
newLine()——插入新的一行
flush()
主要是用来把缓存区的数据刷新到文件中去

常用使用方式:

BufferedWriter buf = new BufferedWriter(new FileWriter("file.java"));

一个测试的Demo

定义三个方法:
(1)testBufferedWrite方法—测试BufferedWriter
BufferedWriter的使用方法:
//1.创建一个输入字符文件
//2.定义一个FileWriter
//3.定义一个BufferedWriter
//4.写的操作
//5.关闭对应的流

(2)testBufferedReader方法—-向文件读内容
BufferedReader的使用方法:
//1.创建一个File文件
//2.定义一个FileReader
//3.定义一个BufferedReader
//4.执行读的操作
读的操作有二种方式,一各是按char来读,一种是按行来说。
一般来说按行来读是更简单,更有效的。
//5.关闭对应的流,可以只关闭最外面的流

(3)CopyFile方法—-复制字符文件
//1.定义输入和输出的文件
//2.分别定义FileReader,FileWriter
//3.分别定义BufferedReader,BufferedWriter
//4.实现复制功能
//5.关闭对应 的流,可以只关闭最外面的缓存流就可以

import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class BufferedReaderBufferedWrite {    //复制字符文件    public static void CopyFile(String src,String des){        //3.分别定义BufferedReader,BufferedWriter        BufferedReader br = null;        BufferedWriter bw = null;        try {            //1.定义二个文件            File fsrc = new File(src);            File fdes = new File(des);            //2.分别定义FileReader,FileWriter            FileReader fr = new FileReader(fsrc);            FileWriter fw = new FileWriter(fdes);            br = new BufferedReader(fr);            bw = new BufferedWriter(fw);            //4.复制操作            char[] c = new char[2];            int len;            while((len = br.read(c)) != -1){                bw.write(c, 0, len);                bw.flush();            }        } catch (FileNotFoundException e1) {            // TODO Auto-generated catch block            e1.printStackTrace();        } catch (IOException e1) {            // TODO Auto-generated catch block            e1.printStackTrace();        }finally{            //5.关闭对应 的流,可以只关闭最外面的缓存流就可以            if(bw != null){                try {                    bw.close();                } catch (IOException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }            if(br != null){                try {                    br.close();                } catch (IOException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }        }    }    //测试BufferedReader    public static void testBufferedReader(){        //3.定义一个BufferedReader        BufferedReader bf = null;        try {            //1.定义一个文件            File f1= new File("testBufferedWrite.txt");            //2.定义一个FileReader            FileReader fr = new FileReader(f1);            bf = new BufferedReader(fr);            //4.执行读的操作            //方式一//          char[] c = new char[2];//          int len;//          while((len = bf.read(c)) != -1){//              System.out.print(c);//          }            //方式二            String str;            while((str = bf.readLine()) != null){                System.out.print(str);                System.out.println();            }        } catch (FileNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally{            //5.关闭对应的流,可以只关闭最外面的流            if(bf != null){                try {                    bf.close();                } catch (IOException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }        }    }    //测试BufferedWriter    public static void testBufferedWrite(){        //3.定义一个BufferedWriter        BufferedWriter bw = null;        try {            //1.定义一个文件            File f1 = new File("testBufferedWrite.txt");            //2.定义一个FileWriter            FileWriter fw = new FileWriter(f1);            bw = new BufferedWriter(fw);            //4.写的操作            String str = "测试BufferedWriter";            bw.write(str);            bw.newLine();            bw.write(str);            bw.flush();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally{            //5.关闭对应的流            if(bw != null){                try {                    bw.close();                } catch (IOException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }        }    }}

调用:

//BufferedWriter使用样例BufferedReaderBufferedWrite.testBufferedWrite();    //测试BufferedReaderBufferedReaderBufferedWrite.testBufferedReader();       //复制字符文件BufferedReaderBufferedWrite.CopyFile("testBufferedWrite.txt", "testBufferedWrite_copy.txt");

参考资料:
1.BufferedWriterapi文档
android_sdk_docs_offline/reference/java/io/BufferedWriter.html
2.BufferedReader文档
android_sdk_docs_offline/reference/java/io/BufferedReader.html
3.BufferedOutputStream与BufferedReader视频
http://edu.csdn.net/course/detail/805/10967?auto_start=1

0 0
原创粉丝点击