BufferedReader和BufferedWriter(七)

简介: 以前读取和写入文件内容时,用的Reader和Writer, 当调用 read() 或者 readLine() 方法时,效率是非常慢的。 如果能添加缓冲区,那么就非常好了。 BufferedReader 和 BufferedWriter ,就是在 Reader和 Writer 的基础上,添加了缓冲区, 即不仅具有Reader和Writer的各个功能,还能通过缓冲区进行相应的优化, 其实,这就是装饰器。

以前读取和写入文件内容时,用的Reader和Writer, 当调用 read() 或者 readLine() 方法时,效率是非常慢的。 如果能添加缓冲区,那么就非常好了。 BufferedReader 和 BufferedWriter ,就是在 Reader和 Writer 的基础上,添加了缓冲区, 即不仅具有Reader和Writer的各个功能,还能通过缓冲区进行相应的优化, 其实,这就是装饰器。


一. BufferedReader


从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取。


一.一 方法


一.一.一 构造方法


一.一.一.一 方法


image.png


其中,传入的这个 Reader 既可以是 FileReader 这样直接的对象,也可以是 InputStreamReader 这样转换过来的对象,有这两种常见形式。


建议采用第二种,转换流的方式。


一.一.一.二 演示


  @Test
    public void readConTest() throws Exception{
        File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc"
                +File.separator+"rz.txt");
        //构造字符的  默认8192
        BufferedReader br=new BufferedReader(
                new FileReader(file),8192);
        //建议采用第二种方式
        BufferedReader br1=new BufferedReader(
            //跟转换流
                new InputStreamReader(new FileInputStream(file))
        );
    }


一.一.二 读取方法


image.png


常常使用 readLine() 一行一行的读取,返回结果直接就是字符串,不用转换。


一.二 BufferedReader 演示


一.二.一 读取文件内容


    @Test
    public void readTest() throws Exception{
        File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc"
                +File.separator+"Hello3.txt");
        //构造字符的  默认8192   8M 8M的读
        BufferedReader br=new BufferedReader(
                //跟转换流
                new InputStreamReader(new FileInputStream(file))
        );
        String temp="";
        while(null!=(temp=br.readLine())){
            System.out.println("输出行:"+temp);
        }
    }


运行程序,控制台打印出文件的内容:


20200618144913826.png


一.二.二 读取控制台 System.in 输入


  public static void main(String[] args) throws Exception {
        readSystem();
    }
    public static void readSystem() throws Exception{
        System.out.println("请输入问候语:");
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        String password=br.readLine();
        System.out.println("输出问候语:"+password);
    }


运行程序:


20200618144920354.png


二. BufferedWriter


二一 方法


二.一.一 构造方法


二.一.一.一 方法


image.png


其中,传入的这个 Writer 既可以是 FileWriter 这样直接的对象,也可以是 InputStreamWriter 这样转换过来的对象,有这两种常见形式。


建议采用第二种,转换流的方式。


二.一.一.二 演示


 @Test
    public void writeConTest() throws Exception{
         File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc"
                +File.separator+"Hello3.txt");
        //第一种
        BufferedWriter bufferedWriter=new BufferedWriter(
                new FileWriter(file,true)
        );
        //最好是用第二种转换的
        BufferedWriter bufferedWriter1=new BufferedWriter(
                new OutputStreamWriter(new FileOutputStream(file))
        );
    }


二.一.二 写入方法


image.png


常常使用 write(String s, int off, int len) 直接写入字符串文本。


如果需要换行的话, 用 newLine() 方法进行换行。


二.二 BufferedWriter 演示


Hello3.txt 目前的文件内容是:


20200618144928699.png


@Test
    public void writeTest() throws Exception{
        File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc"
                +File.separator+"Hello3.txt");
        BufferedWriter bufferedWriter1=new BufferedWriter(
                new OutputStreamWriter(new FileOutputStream(file))
        );
        //重启一行, 其实就是内部写 \r\n
        bufferedWriter1.newLine();
        bufferedWriter1.write("我是BufferedWriter写入的内容");
        bufferedWriter1.newLine();
        bufferedWriter1.write("Hello",2,3);
        bufferedWriter1.close();
    }


运行程序,查看 Hello3.txt 文件的内容(重写写入的)


20200618144933703.png


谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!

相关文章
|
5月前
|
Java
FileInputStream和FileOutputStream
FileInputStream和FileOutputStream
22 0
|
10月前
|
存储
人迹罕至的FileReader
FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File 或 Blob 对象指定要读取的文件或数据。 这边文章主要分4 部分介绍FileReader。
27 0
|
6月前
File操作-FileReader(FileWriter)/BufferedReader(Writer)
File操作-FileReader(FileWriter)/BufferedReader(Writer)
26 0
|
9月前
FileReader和FileWriter流
FileReader和FileWriter流
29 0
|
11月前
|
存储 Java
FileInputStream 你了解多少
FileInputStream 你了解多少
|
11月前
|
Java
浅谈FileOutputStream
浅谈FileOutputStream
|
Web App开发 存储 小程序
FileReader详解
FileReader详解
FileReader详解
|
Java
java IO流之BufferedReader和BufferedWriter
BufferedReader和BufferedWriter 一、简介: 二、使用BufferedReader案列 BufferedReader 中文乱码解决方案解决方案; 三、BufferedWriter使用案例
205 0
java IO流之BufferedReader和BufferedWriter
|
移动开发
字节流InputStream和OutputStream(二)上
字节流InputStream和OutputStream(二)
147 0
字节流InputStream和OutputStream(二)上