首页 > 代码库 > IO流-读取写入缓冲区

IO流-读取写入缓冲区

例如FileReader和FileWriter在读取的时候是读一次或者写一次就请求磁盘,这样使用的时间非常的长,效率比较低,因此引入BufferedReader和BufferedWriter作为读取和写入的缓存区.

1、BufferedReader一次读取8K的字符流到内存中,当程序读取字符时会先到BufferedReader中读取,若没有的话BufferedReader再从磁盘中读取,一次又是8k

2、BufferedWriter作为写入缓存区,要写入文件的字符流写入BufferedWriter(内存中),当刷新或关闭BufferedWriter时,才写入磁盘,减少磁盘的写入次数,提高效率

此二者使用时,首先要有流对象,一下代码举例:

import java.io.*;class Test{    public static void main(String[] args)    {        try        {            copy("c:\\log.txt", "d:\\testlog.txt");        }        catch(IOException e)        {            e.printStackTrace();            System.out.println("IO异常");        }    }        public static void copy(String sourcePath, String destPath)throws IOException     {        //创建读取和写入缓冲区        BufferedReader bufferedReader = new BufferedReader(new FileReader(sourcePath));        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(destPath, true));                //用以存放bufferedReader读取出来的一行        String readerCache = null;                 //当BufferedReader读取一行时是以换行符为判断,但不会读取换行符        while((readerCache = bufferedReader.readLine()) != null)        {            bufferedWriter.write(readerCache);            bufferedWriter.newLine(); //写入一个换行符            bufferedWriter.flush(); //刷新写入文件        }        //当缓冲区关闭的时候流资源随之关闭
     //注意在关闭资源的时候要注意判断,若没有创建成功,本来就是null,关闭的时候会发生异常,增强代码的健壮性
     if(bufferedReader != null)   bufferedReader.close();
     if(bufferedWriter != null)   bufferedWriter.close(); }}

 

IO流-读取写入缓冲区