Java基础之BufferedWriter和BufferedReader

1.BufferedWriter

BufferedWriter和FileWriter差不多,也是一种用来写文件的类,属于字符输出流
区别在于BufferedWriter有一个长度为8192的char[]字符数组当做缓冲区使用
每次在写数据时,实际上是不断地向缓冲数组中添加字符。
如果缓冲数组满了,将会统一写到硬盘的文件中,如果没满,等待下一次写入。
如果最终关闭流时,数组仍然未满,那么也会将剩余的有效部分写到硬盘文件里。

使用BufferedWriter:
1.创建一个普通的FileWriter
2.将FileWriter包装成为一个缓冲的BufferedWriter,用构造方法
3.之后BUfferedWriter使用的方法和FileWirter基本一样
构造方法:

public BufferedWriter(FileWriter fw);

BufferedWriter提供了一个换行的方法:
public void newLine():根据操作系统的不同选择\r\n或者\n或者\r(在FileWriter中,一旦换了操作系统,将要修改代码)

public class BufferedWriterDemo {
    public static void main(String []args) throws IOException {
        ///创建一个普通的FileWriter对象
        FileWriter fw = new FileWriter("feng.txt");
        ///传递给BufferedWriter对象
        BufferedWriter bfw = new BufferedWriter(fw);
        bfw.write("Qt Robot");
        ///换行
        bfw.newLine();
        bfw.write("Qt2 Robot2");
        //关闭流
        bfw.close();//不需要关闭FileWriter的对象
    }
}

这里写图片描述

2.BufferedReader

BufferedReader和普通的FileReader差不多,也是用来读读取文件的一种字符输入流; 区别在于BufferedReader有一个长度为8192的字符数组char[],当做缓冲使用。 当读取数据时,一次性从硬盘中读取最多8192个字符,放在缓冲区中使用。
在调用read方法时,只是从缓冲区中拿出来字符进行使用。 如果缓冲区中的字符被取空,将会自动再次读取最多8192个再次放在缓冲区中。
使用BufferedReader:
1.创建普通的FileReader;
2.将FileReader包装为BufferedReader,构造方法;
3.使用和FileReader基本没区别

构造方法:

 public BufferedReader(FileReader fr);

BufferedReader提供了一个方法可以读取一整行字符串
public String readLine();//读取一整行字符串,返回值不包含换行符;当读取到无字符串是,返回null

public class BufferedReaderDemo {
    public static void main(String []args) throws IOException {
        FileReader fr = new FileReader("feng.txt");
        //包装为BufferedReader
        BufferedReader bfr = new BufferedReader(fr);
        //读取单个字符
        /*int ch;
        while((ch = bfr.read()) != -1){
            System.out.println((char)ch);
        }*/

        //读取字符数组(从8192的缓冲区中一次性取出多个字符使用)
        /*char[] arr = new char[5];//每次取5个字符
        int len;//有效个数
        while( (len = bfr.read(arr))!=-1) {
            String str = new String(arr,0,len);
            System.out.println(str);
        }*/

        String str;// = bfr.readLine();
        //System.out.println(str);*/

        while((str = bfr.readLine()) != null) {
            System.out.println(str);
        }

        bfr.close();
    }
}

这里写图片描述

猜你喜欢

转载自blog.csdn.net/sinat_21107433/article/details/81134690
今日推荐