BufferedReader带有缓冲区的输入流 及 InputStreamReader转换流

BufferedReader:
    带有缓冲区的字符输入流。
    使用这个流的时候不需要自定义char数组,或者说不需要自定义byte数组,自带缓冲区。
 
BufferedRreader:
package com.javaSe.BufferedReader;




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




/*
BufferedReader:
    带有缓冲区的字符输入流。
    使用这个流的时候不需要自定义char数组,或者说不需要自定义byte数组,自带缓冲区。
*/
public class BufferedReaderTest01 {
    public static void main(String[] args) {
        BufferedReader bfr = null;
        try {
            FileReader reader = new FileReader("CopyTest02.java");
            // 当一个流的构造方法中需要一个流的时候,这个被传进来的流叫做:节点流。
            // 外部负责包装的这个流,叫做:包装流,还有一个名字叫做:处理流。
            // 向当前这个程序来说:FileReader就是一个节点流,BufferedReader就是包装流/处理流。
            bfr = new BufferedReader(reader);
            
            // 读一行
            /*String firstLine = bfr.readLine();
            System.out.println(firstLine);
    
            firstLine = bfr.readLine();
            System.out.println(firstLine);
    
            firstLine = bfr.readLine();
            System.out.println(firstLine);*/
            
            // bfr.readLine()方法读取一个文本行,单不带换行符。
            String s = null;
            while ((s = bfr.readLine()) != null){
                System.out.println(s);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (bfr != null) {
                // 关闭流
                // 对于包装流来说,只需要关闭最外层流就行,里面的节点流会自动关闭。(可以看源代码)
                try {
                    bfr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
    }
}

 

BufferedReader:

package com.javaSe.BufferedReader;


import java.io.*;
/*
转换流:InputStreamReader
*/
public class BufferedReaderTest02 {
    public static void main(String[] args) {
        FileInputStream in = null;
        BufferedReader br = null;
        try {
            /*// 字节流
            in = new FileInputStream("CopyTest02.java");
            
            // 通过转换流转换
            // in是字节流。reader是包装流
            InputStreamReader reader = new InputStreamReader(in);
            
            // 这个构造方法只能传一个字节流,不能传字符流。
            br = new BufferedReader(reader);*/
            
            // 合并
            br = new BufferedReader(new InputStreamReader(new FileInputStream("CopyTest02.java")));
            
            String line = null;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    // 关闭最外层
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

 

posted @ 2020-08-09 20:15  xlwu丶lz  阅读(590)  评论(0编辑  收藏  举报