IO字符流之读写缓冲区(BufferedWriter、BufferedReader)

时间:2021-10-18 21:00:27

缓冲区是为了提高效率所使用的,在使用缓冲区之前必须先明确流对象。就如同拿杯子接水一样,必须先知道这个杯子放在哪里接水

BufferedWriterDemo(输入字符流缓冲区演示):

IO字符流之读写缓冲区(BufferedWriter、BufferedReader)IO字符流之读写缓冲区(BufferedWriter、BufferedReader)
import java.io.*;
/*
缓冲区的出现是为了提高流的操作效率而出现的。

所以在创建缓冲区之前,必须要先有流对象。

该缓冲区对象中提供了一个跨平台的换行符。
newLine();

*/
class BufferedWriterDemo
{
    public static void main(String[] args) 
    {
        //定义一个流对象。
        FileWriter fw = null;
        //为了提高字符写入流效率。加入了缓冲技术。
        BufferedWriter bufw = null;
        try
        {
            fw = new FileWriter("E:\\BufferedWriterDemo.txt");
            bufw = new BufferedWriter(fw);//只要将需要被提高效率的流对象作为参数传递给缓冲区的构造函数即可。
            bufw.write("fsafsfasfd");
        }
        catch (IOException e)
        {
            System.out.println(e.toString());
        }
        finally
        {
            try
            {
                if (fw!=null)
                {
                    bufw.close();
                }
            }
            catch (IOException e)
            {
            }
        }
    }
}
BufferWriterDemo

BufferedReaderDemo(读取字符流缓冲区演示):

IO字符流之读写缓冲区(BufferedWriter、BufferedReader)IO字符流之读写缓冲区(BufferedWriter、BufferedReader)
/*
字符读取流缓冲区:
该缓冲区提供了一个一次读一行的方法 readLine,方便于对文本数据的获取。
当返回null时,表示读到文件末尾。

readLine方法返回的时候只返回回车符之前的数据内容。并不返回回车符。
*/

import java.io.*;
class BufferedReaderDemo 
{
    public static void main(String[] args) 
    {
        //先创建字符读取流对象
        FileReader fr = null;
        //字符读取流对象缓冲区。
        BufferedReader bufr = null;

        try
        {
            fr = new FileReader("E:\\BufferedWriterDemo.txt");
            bufr = new BufferedReader(fr);//为了提高效率。加入缓冲技术。将字符读取流对象作为参数传递给缓冲对象的构造函数。
            String result = null;
            while ((result=bufr.readLine())!=null)
            {
                System.out.println(result);
            }
        }
        catch (IOException e)
        {
            System.out.println(e.toString());
        }
        finally
        {
            try
            {
                if (fr!=null)
                {
                    bufr.close();//读取字符流缓冲对象可直接关闭资源,因其继承流了对象Reader的关闭资源方法
                }
            }
            catch (IOException e)
            {
            }
            
        }
    }
}
BufferedReaderDemo

使用缓存器复制文件演示:

IO字符流之读写缓冲区(BufferedWriter、BufferedReader)IO字符流之读写缓冲区(BufferedWriter、BufferedReader)
import java.io.*;
class userBufferedCopyFileDemo
{
    public static void main(String[] args) 
    {
        //创建读取和写入文件字符流对象
        FileReader fr = null;
        FileWriter fw = null;
        //创建读写字符流对象的缓冲区
        BufferedReader bufr = null;
        BufferedWriter bufw = null;
        //定义字符数组与计数器用于保存读取的数据信息
//        char [] array = new char[1024];
//        int len = 0;

        try
        {
            fr = new FileReader("E:\\BufferedWriterDemo.txt");
            fw = new FileWriter("E:\\userBufferCopyFileDemo.txt");
            bufr = new BufferedReader(fr);
            bufw = new BufferedWriter(fw);
            //读取进数组的方式
//            while ((len=bufr.read(array))!=-1)
//            {
//                bufw.write(array,0,len);
//            }
            //一行一行读取
            String line = null;
            while((line=bufr.readLine())!=null)
            {
                bufw.write(line);
                bufw.newLine();//输出一个换行符。
                bufw.flush();//为避免例如停电等情况每写完一行就将流刷新一次。

            }
        }
        catch (IOException e)
        {
            System.out.println(e.toString());
        }
        finally
        {
            try
            {
                if (fr!=null)
                {
                    bufr.close();
                }
            }
            catch (IOException e)
            {
            }
            try
            {
                if (fw!=null)
                {
                    bufw.close();
                }
            }
            catch (IOException e)
            {
            }
        }
    }
}
userBufferedCopyFileDemo