문자 입력 스트림과 출력 스트림의 기본 사용법

1. 문자 입력 스트림 [리더]

바이트 스트림을 사용하여 중국어를 읽으면 잘못된 문자가 생성되므로 문자 스트림이 있습니다. Java.io.Reader는 문자 입력 스트림으로 문자 입력 스트림의 최상위 상위 클래스이며 몇 가지 공통 멤버 메소드를 정의합니다. 추상 클래스 멤버 메서드입니다.

int read()는 단일 문자를 가져와서 반환합니다.

int read(char [] cbuf)는 한 번에 여러 문자를 읽고 문자를 배열로 읽습니다.

void close()는 리디렉션을 닫고 이와 관련된 모든 리소스를 해제합니다.

java.io.FileReader는 InputStreamReader를 확장하고 Reader를 확장합니다.

FileReader: 파일 문자 입력 스트림

기능:하드디스크 파일의 데이터를 문자 형태로 메모리에 읽어옵니다.

건설 방법:

FileReader(문자열 파일 이름)

FileReader(파일 파일)

매개변수:파일 읽기용 데이터 소스

문자열 fileName: 파일의 경로

파일 파일: 파일

FileReader 생성 방법의 역할

1. FileReader 객체 생성

2. 읽을 파일을 FileReader 개체로 가리킵니다.

문자 입력 스트림을 사용하는 단계:

1. FileReader 객체를 생성하고 생성 메소드에서 읽을 데이터소스를 바인딩합니다.

2. FileReader 객체의 reader 메소드를 사용하여 파일을 읽습니다.

3. 자원 공개

기본 사용법:

생성자 public FileReader(File file) 소스 파일 객체에 연결하기 위한 문자 입력 스트림 파이프라인을 생성합니다.

            Public FileReader(String pathname) 문자 입력 스트림 파이프라인을 생성하고 소스 파일 경로에 연결합니다.

/**
 * @author 高影  2022/12/14  14:07
 * @version 1.0
 */
public class Demo07 {
    public static void main(String[] args) throws IOException {
        //定义字符输入流,在字节流汉字占三个字节,在字符流汉字占一个字符
        FileReader f1 = new FileReader("D:/b.txt");
        //每次读取一个字符
        int i1 = f1.read();
        System.out.println((char)i1);
        int i2 = f1.read();
        System.out.println((char)i2);
        //每次读取缓冲区
        char[] chars = new char[3];
        int i3 = f1.read(chars);
        String s1 = new String(chars,0,i3);//截收数组,从第0个索引开始,截取读收有效字符数长度
        System.out.println(s1);
        int i4 = f1.read(chars);
        String s2 = new String(chars,0,i4);
        System.out.println(s2);
        //释放资源
        f1.close();
    }
}

두 번째, 문자 출력 스트림 [Writer]
java.io.Writer 추상 클래스는 문자 스트림을 작성하는 데 사용되는 모든 클래스의 슈퍼클래스를 식별하고 지정된 문자 정보를 작성합니다. 목적지. 이는 바이트 출력 스트림의 기본 공통 기능 방법을 정의합니다.

void write(int c): 단일 문자 쓰기

void write(char[] cbuf): 문자 배열 쓰기

abstract void write(char[] cbuf,int off,int len): 문자 배열의 특정 부분, off 배열의 시작 인덱스, len에 쓰여진 문자 수를 씁니다.

void write(String str): 문자열 쓰기

void write(String str,int off,int len): 문자열의 특정 부분, off 문자열의 시작 인덱스, len에 쓰여진 문자 수를 씁니다.

void flash(): 스트림의 버퍼를 새로 고칩니다.

void close(): 이 스트림을 닫지만 먼저 플러시합니다.

/**
 * @author 高影  2022/12/14  13:40
 * @version 1.0
 */
public class Demo06 {
    public static void main(String[] args) throws IOException {
        File f1 = new File("D:/b.txt");
        if(!f1.exists()){
            f1.createNewFile();
        }
        //定义字符输出流
        Writer out = new FileWriter(f1);
        out.write(97);
        out.write((int)'我');
        char[] ch = {'高','级','工','程','师'};
        out.write(ch,0,5);
        out.write("Java");
        out.flush(); //字符流必须刷新缓冲区,才会真正写入磁盘文件中
        out.close();
    }
}

 

 문자 스트림 바이트 스트림과 비교하여 문자 스트림은 텍스트 데이터를 읽는 데 더 적합합니다.

3. 버퍼 스트림

버퍼링된 스트림은 효율적인 스트림 또는 고급 스트림이라고도 하며, 이전에 학습된 바이트 스트림을 원본 스트림이라고 할 수 있습니다.

 기능: 버퍼 스트림에는 자체 버퍼가 있어 원본 바이트 스트림과 문자 스트림의 데이터 읽기 및 쓰기 성능을 향상시킬 수 있습니다.

바이트 버퍼 스트림의 성능 최적화 원칙

1. 바이트 버퍼 입력 스트림에는 8KB 버퍼 풀이 제공됩니다. 앞으로는 버퍼 풀에서 직접 데이터를 읽을 것이므로 성능이 더 좋습니다.

2. 바이트 버퍼 출력 스트림은 8KB 버퍼 풀과 함께 제공되며 데이터는 버퍼 풀에 직접 기록되며 데이터 쓰기 성능은 매우 높습니다.

 바이트 버퍼 스트림

바이트 버퍼 입력 스트림: BufferedInputStream, 바이트 입력 스트림에서 데이터 읽기 성능을 향상시킵니다.

바이트 버퍼링된 출력 스트림: BufferedOutputStream, 바이트 출력 스트림에서 데이터 읽기 성능을 향상시킵니다.

 문자 버퍼 스트림

문자 버퍼링된 입력 스트림: BufferedReader;

 문자 버퍼 입력 스트림을 위한 새로운 방법

 문자 버퍼링된 출력 스트림: BufferedWriter;

 문자 버퍼 출력 스트림을 위한 새로운 방법

/**
 * @author 高影  2022/12/14  19:39
 * @version 1.0
 */
public class Demo08 {
    public static void main(String[] args) throws IOException {
        //文件对象
        File f1 = new File("D:/a.txt");
        //创建Reader对象
        Reader r = new FileReader(f1);
        //读操作
        //BufferedReader缓冲区,传入Reader对象
        BufferedReader b = new BufferedReader(r);
        //n初始化
        int n;
        //判断后值是否为-1,如果结果是=1,则没有值
        while ((n=b.read()) !=-1){
            System.out.println((char)n);
        }
    }
}

 

 스트림 새로 고침 및 닫기     

메서드: 플러시() 설명: 스트림을 새로 고치고 계속해서 데이터 쓰기

메소드: close() 설명: 스트림을 닫고 리소스를 해제하지만 스트림은 닫기 전에 새로 고쳐집니다. 일단 닫히면 더 이상 데이터를 쓸 수 없습니다.

                       

추천

출처blog.csdn.net/weixin_69036336/article/details/128308705