38字符缓冲输出流BufferedWriter-字符缓冲输入流BufferedReader

缓冲流:
比如:能高效的读写数据缓冲流,能转换编码的转换流,能持久化存储对象的序列化流等等,这些流都是在基本的流对象基础之上创建而来的,对基本的流进行增强

缓冲流也叫高效流,按照数据类型分类:
字节缓冲流:BufferedInputStream ,BufferedOutputStream
字符缓冲流:BufferedReader ,BufferedWriter


java.io.BufferedWriter extends Writer
字符缓冲输入流:
继承父类,共性成员方法:
   void write(int c)写入单个字符
   void write(char[]) 写入字符数组
   abstract void writer(char[] cbuf,int off,int len) 写入字符数组的一部分,off字符数组开始索引,len写入字符个数
   void write(String str) 写入字符串
   void write(String str,int off,int len) 写入字符串的某一部分,off字符串开始索引,len写入字符个数
   void flush()刷新该留的缓冲
   void close() 关闭此流,但要先刷新它

   构造方法:
    BufferedWriter(Writer out)创建一个使用默认大小的缓冲字符输入流
    BufferedWriter(Writer out,int size)创建一个使用给定大小的输出缓冲区的新缓冲字符输出流
    参数:
    Writer out:字符输出流,我们可以传递FileWriter,缓冲区FileWriter增加一个缓冲区,提高FileWriter的写入效率
    int size:指定缓冲区大,不写默认大小

    特有成员方法:
      void newLine() 写入一个行分隔符,会根据不同的操作系统,获取不同的行分隔符
      换行符号:
Windows:\r\n
Linus:/n
Mac:/r


    使用步骤:
    1.创建一个字符缓冲输出流对象,构造方法中传递字符输出流
    2.调用字符缓冲输出流中的方法write,把数据写入到内存缓冲区中
    3.调用字符缓冲输出流中的方法flush,把内存缓冲区中的数据,刷新到文件中
    4.释放资源

package demo40字符缓冲输出流BufferedWriter;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

/*
缓冲流:
比如:能高效的读写数据缓冲流,能转换编码的转换流,能持久化存储对象的序列化流等等,这些流都是在基本的流对象基础之上创建而来的,对基本的流进行增强

缓冲流也叫高效流,按照数据类型分类:
字节缓冲流:BufferedInputStream ,BufferedOutputStream
字符缓冲流:BufferedReader ,BufferedWriter


java.io.BufferedWriter extends Writer
字符缓冲输入流:
继承父类,共性成员方法:
   void write(int c)写入单个字符
   void write(char[]) 写入字符数组
   abstract void writer(char[] cbuf,int off,int len) 写入字符数组的一部分,off字符数组开始索引,len写入字符个数
   void write(String str) 写入字符串
   void write(String str,int off,int len) 写入字符串的某一部分,off字符串开始索引,len写入字符个数
   void flush()刷新该留的缓冲
   void close() 关闭此流,但要先刷新它

   构造方法:
    BufferedWriter(Writer out)创建一个使用默认大小的缓冲字符输入流
    BufferedWriter(Writer out,int size)创建一个使用给定大小的输出缓冲区的新缓冲字符输出流
    参数:
    Writer out:字符输出流,我们可以传递FileWriter,缓冲区FileWriter增加一个缓冲区,提高FileWriter的写入效率
    int size:指定缓冲区大,不写默认大小

    特有成员方法:
      void newLine() 写入一个行分隔符,会根据不同的操作系统,获取不同的行分隔符
      换行符号:
Windows:\r\n
Linus:/n
Mac:/r


    使用步骤:
    1.创建一个字符缓冲输出流对象,构造方法中传递字符输出流
    2.调用字符缓冲输出流中的方法write,把数据写入到内存缓冲区中
    3.调用字符缓冲输出流中的方法flush,把内存缓冲区中的数据,刷新到文件中
    4.释放资源

 */
public class DemoBufferedWriter {
    public static void main(String[] args) throws IOException {
        //1.创建一个字符缓冲输出流对象,构造方法中传递字符输出流
        BufferedWriter bw=new BufferedWriter(new FileWriter("E:\\多线程\\ee.txt"));
        // 2.调用字符缓冲输出流中的方法write,把数据写入到内存缓冲区中
        for (int i=0;i<10;i++){
            bw.write("传智播客");
            bw.write("\r\n");//换行
            bw.newLine();//换行
        }
        //3.调用字符缓冲输出流中的方法flush,把内存缓冲区中的数据,刷新到文件中
        bw.flush();
        //4.释放资源
        bw.close();
    }
}

 

 运行:

java.ioBufferedReader extends Reader
 继承父类的公共的成员方法:
    int read() 读取单个字符
    int read(char[] cbuf) 依次读取多个字符,将字符写入数组
    void close() 关闭该流并释放与之关联的所有资源

    构造方法:
    BufferedReader(Reader in)创建一个使用默认大小输入缓冲区的输入流
    BufferedReader(Reader in ,int size)创建一个使用指定大小的输入缓冲区的缓冲字节输入流
    参数:
    Reader in:字符输入流,我们可以传递FileReadr,缓冲区会给FileReader增加一个缓冲区,提高FileReader的读取效率

    特有成员方法:
    String readLine()读取一行文本,行的终止符号:通过以下字符之一,即可认为某行已经终止:换行\n 、回车\r 或回车后直接跟着换行\r\n
    返回值:包含行内容的字符串,不包含任何行终止符,如果已经达到末尾,则返回null

    步骤:
    1.创建一个字符缓冲输入流对象,构造方法中传递字符输入流
    2.使用字符缓冲输入流对象中的方法read/readLine读取文本
    3.释放资源

package demo41字符缓冲输入流BufferedReader;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

/*
java.ioBufferedReader extends Reader
 继承父类的公共的成员方法:
    int read() 读取单个字符
    int read(char[] cbuf) 依次读取多个字符,将字符写入数组
    void close() 关闭该流并释放与之关联的所有资源

    构造方法:
    BufferedReader(Reader in)创建一个使用默认大小输入缓冲区的输入流
    BufferedReader(Reader in ,int size)创建一个使用指定大小的输入缓冲区的缓冲字节输入流
    参数:
    Reader in:字符输入流,我们可以传递FileReadr,缓冲区会给FileReader增加一个缓冲区,提高FileReader的读取效率

    特有成员方法:
    String readLine()读取一行文本,行的终止符号:通过以下字符之一,即可认为某行已经终止:换行\n 、回车\r 或回车后直接跟着换行\r\n
    返回值:包含行内容的字符串,不包含任何行终止符,如果已经达到末尾,则返回null

    步骤:
    1.创建一个字符缓冲输入流对象,构造方法中传递字符输入流
    2.使用字符缓冲输入流对象中的方法read/readLine读取文本
    3.释放资源
 */
public class DemoBufferedReader {
    public static void main(String[] args) throws IOException {
        //1.创建一个字符缓冲输入流对象,构造方法中传递字符输入流
        BufferedReader br=new BufferedReader(new FileReader("E:\\多线程\\ee.txt"));
        //2.使用字符缓冲输入流对象中的方法read/readLine读取文本
        String line=br.readLine();
        System.out.println(line);

       line=br.readLine();
        System.out.println(line);


        line=br.readLine();
        System.out.println(line);//只有有内容可以再次调用一直读取,知道null

        /*
        以上读取的过程是一个重复的过程,所以可以使用循环优化了,不知道文件中有多少行数据,所以使用while循环
        while循环的结束条件,读取到null结束
         */
        while((line=br.readLine())!=null){
            System.out.println(line);
        }

        // 3.释放资源
        br.close();

    }
}

结果:

猜你喜欢

转载自blog.csdn.net/dengfengling999/article/details/124436208