Java之缓冲流、转换流、节点流、包装流

一、BufferedRead(带有缓冲的字符输入流)

  • 带有缓冲区的字符输入流

  • 使用这些流的时候不需要自定义char数组,或者说不需要自定义byte数组,自带缓冲

1、节点流和包装流

  • 当一个流的构造方法中需要一个流的时候,这个被传进来的流叫做:节点流
  • 外部负责包装的这个流,叫做:包装流,还有一个名字叫做:处理流

2、readline :读一行字符

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

public class BufferedReadertest1 {
    
    
    public static void main(String[] args) throws IOException {
    
    

        //对于这个程序来说:FileReader就是一个节点流,BufferedReader就是一个包装流/处理流。
        FileReader reader = new FileReader("src/Copy01.java");
        BufferedReader br = new BufferedReader(reader);

        //读一行
        String firstLine = br.readLine();
        System.out.println(firstLine);

        String secondLine = br.readLine();
        System.out.println(secondLine);

        String thirdLine = br.readLine();
        System.out.println(thirdLine);

        String s = null;
        while((s = br.readLine()) != null){
    
    
            System.out.println(s);
        }

        //关闭流
        //对于包装流来说,只需要关闭最外层流就行,里面的节点流会自动关闭。
        br.close();
    }
}

在这里插入图片描述

二、转换流(InputStreamReader与OutputStreamWriter)

这里只演示InputStreamWriter的转换流:OutputStreamWriterBufferedWrite中演示

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;

public class BufferedReaderTest2 {
    
    
    public static void main(String[] args) throws Exception {
    
    
/*        //字节流
        FileInputStream in = new FileInputStream("");

        //通过转换流转换
        //in是节点流,reader是包装流
        InputStreamReader reader = new InputStreamReader(in);

        //这个构造方法只能传一个字符流,不能传字节流
        //reader是节点流,br是包装流
        BufferedReader br = new BufferedReader(reader);*/

        //合并
        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("src/Copy01.java")));

        String line = null;
        while ((line = br.readLine()) != null){
    
    
            System.out.println(line);
        }

        //关闭最外层
        br.close();
    }
}

三、BufferedWrite:(带有缓冲的字符输出流)

import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;

public class BufferedWriteTest {
    
    
    public static void main(String[] args) throws IOException {
    
    
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("temp")));

        out.write("hello world");
        out.write("\n");
        out.write("hello kitty");
        out.flush();
        out.close();
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq2632246528/article/details/114645311