BufferedWriter和BufferedReader那些事儿

简介

BufferedWriter用于对Writer的缓冲区,BufferedReader用于对Reader的缓冲区,可以很好的提升效率

读缓冲

我们先从介绍开始
BufferedReader.png

这句话的核心思想就是我们能够在创建该类时,能够在读取数组,字符串的时候进行字符的缓冲,核心在于能够提高效率

我们再看看构造函数
image.png

里面可以填入Reader类的对象(当然子类也可以包含进去)

再瞅瞅方法
image.png

来看看有啥值得注意的方法

readLine():能够对文件中的数据进行一行一行的读取

其他的方法都是平时用的比较频繁的

写缓冲

介绍
image.png

和读缓冲很类似,总之是为了提升效率,能够缓冲字符

构造方法
image.png

内部需要传入的是Writer的子类

方法
image.png
newLine():能够换行,在Windows系统中,换行符是“\r\n”,而在Linux中是“\n”,所以我们在进行文件的写方法时,我们可以用这个方法,不需要根据系统的不同来使用不同的换行的方法

案例

需求:利用缓冲技术实现一份文件的复制

import java.io.*;

public class IOMain {
    public static void main(String[] args) throws Exception{
        BufferedTest();
    }
    public static void BufferedTest() {
        //简历缓冲读和缓冲写
        BufferedReader br=null;
        BufferedWriter bw=null;
        
        
        try {
            bw=new BufferedWriter(new FileWriter("C:\\Users\\Administrator\\Desktop\\IO\\BufferTest.txt"));
            
            
            bw.write("I love you!");
            bw.newLine();
            bw.write("Do you love me?");
            bw.newLine();
            bw.write("Thank you!");
            bw.flush();//一定要刷新, 不然文档内容还是空的
            br=new BufferedReader(new FileReader("C:\\Users\\Administrator\\Desktop\\IO\\BufferTest.txt"));
            String str=null;
            while((str=br.readLine())!=null)
            {
                System.out.println(str);
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally
        {
            try {
                bw.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                br.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

总结

BufferedWriter用于写的时候进行缓冲,内部会创建缓冲区,提高效率,减少多次底层系统的调用
BufferedReader用于读的时候进行缓冲,缓冲区对读入的数据进行存储,减少底层系统的调用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。