Flujo de entrada de caracteres [Lector] Leer datos de caracteres

1. Flujo de caracteres

Al leer un archivo de texto usando una secuencia de bytes, cuando se encuentran caracteres chinos, es posible que no se muestren los caracteres completos, porque un carácter chino puede ocupar varios bytes de almacenamiento. Entonces, Java proporciona algunas clases de flujo de caracteres, que leen y escriben datos en unidades de caracteres, específicamente para procesar archivos de texto.

1个中文
    GBK:占用两个字节
    UTF-8:占用3个字节		    

1.1 Flujo de entrada de caracteres [Lector]

java.io.Reader: flujo de entrada de caracteres, la clase principal más importante del flujo de entrada de caracteres, define algunos métodos de miembros comunes y es una clase abstracta

共性的成员方法:
    int read() 读取单个字符并返回
    int read(char[] cbuf)一次读取多个字符,将字符读入数组
    void close() 关闭该流并释放与之关联的所有资源

java.io.FileReader extends InputStreamReader extends Reader

1.2 clase FileReader

FileReader: flujo de entrada de caracteres del archivo
Función: lee los datos del archivo del disco duro en la memoria en forma de caracteres

1. 字符编码:字节与字符的对应规则。Windows系统的中文编码默认是GBK编码表。
idea中UTF-8
2. 字节缓冲区:一个字节数组,用来临时存储字节数据

1.3 Método de construcción:

    FileReader(String fileName)
    FileReader(File file)
    参数:读取文件的数据源
        String fileName:文件的路径
        File file:一个文件
    FileReader构造方法的作用:
        1.创建一个FileReader对象
        2.会把FileReader对象指向要读取的文件

Los pasos para usar la secuencia de entrada de caracteres:
1. Cree un objeto FileReader, vincule la fuente de datos para leer en el método de construcción
2. Use el método read en el objeto FileReader para leer el archivo
3. Libere recursos

Código:

import java.io.FileReader;
import java.io.IOException;
public class Demo02Reader {
    
    
    public static void main(String[] args) throws IOException {
    
    
        //1.创建FileReader对象,构造方法中绑定要读取的数据源
        FileReader fr = new FileReader("day09_IOAndProperties\\b.txt");
        //2.使用FileReader对象中的方法read读取文件
        /*int read = 0;
        while((read = fr.read()) != -1){
            System.out.print((char) read);
        }*/

        //int read(char[] cbuf)一次读取多个字符,将字符读入数组
        char[] cs = new char[1024];
        int len = 0;//记录的是每次读取的有效的字符个数
        while((len = fr.read(cs))!=-1){
    
    
          /*
            String类的构造方法
            String(char[] value) 把字符数组转换为字符串
            String(char[] value,intoffset,int count) 把字符数组的一部分转换为字符串,offset数组的开始索引,count转换的个数
          */
            System.out.println(new String(cs,0,len));
        }
        // 3.释放资源
        fr.close();
    }

Demostración del programa:

  1. Leer caracteres: el método de lectura, puede leer un carácter a la vez, promover a tipo int, leer hasta el final del archivo, devolver -1, leer en un bucle y demostrar el resultado:
    Inserte la descripción de la imagen aquí

  2. Use la matriz de caracteres para leer: read (char [] cbuf), cada vez que se lee la longitud de b en la matriz, se devuelve el número de caracteres válidos leídos, cuando se lee el final, se devuelve -1 y se usa el código para demostrar :
    Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_44664432/article/details/108516618
Recomendado
Clasificación