Introducción y resumen de los conceptos relacionados con la entrada y salida de Java (archivo, flujo IO) (10)

¡Acostúmbrate a escribir juntos! Este es el décimo día de mi participación en el "Nuggets Daily New Plan · April Update Challenge", haz clic para ver los detalles del evento .

En el artículo anterior, explicamos principalmente el concepto y el uso de las clases y Filedos clases abstractas de flujos de bytes InputStream / OutputStreamy sus subclases. El artículo anterior Introducción y resumen de los conceptos relacionados con la entrada y salida de Java (archivo, flujo de E/S) (9) es el último artículo sobre InputStream y OutputStream. A partir de ahora, comenzaremos a presentar el contenido relacionado con el flujo de caracteres.

En Java IO, los flujos de caracteres tienen dos clases abstractas relacionadas Reader / Writer. Comencemos con los flujos de entrada de caracteres Reader.

Conceptos Básicos del Lector

La clase Reader en sí misma es una clase abstracta y también se usa para procesar flujos de entrada. La diferencia entre este y InputStream es que es la clase principal común del flujo de entrada en unidades de caracteres (denominado flujo de entrada de caracteres).

Herencia de la clase Reader

Cada subclase correspondiente a Reader se muestra en la figura:

Captura de pantalla 2022-04-09 a las 2.14.32 p.m..png

Algunas de las clases de implementación comúnmente utilizadas son:

  • BufferedReader: esto es muy similar al concepto de BufferedInputStream, es decir, después de leer el texto de la transmisión y luego escribirlo en el caché, puede mejorar la eficiencia. Para el tamaño del caché, el usuario puede especificarlo manualmente, y el tamaño predeterminado también se establece en el código. En nuestro uso diario, podemos usar directamente el tamaño predeterminado. Se pueden leer caracteres, matrices y líneas.

  • InputStreamReader: como se mencionó en la introducción anterior, la función es convertir bytes en caracteres, lo que puede resolver el problema de los caracteres ilegibles que se encuentran a menudo.

  • FileReader: proporcionado para leer archivos de caracteres.

Algunas funciones de la clase Reader

El constructor de la clase abstracta Lector es el siguiente:

protected Reader() //创建一个新的字符流 reader,其重要部分将同步其自身的 reader。

// 其英文注释为:
// Creates a new character-stream reader whose critical sections will
// synchronize on the given object.
// 意思就是:创建一个新的字符流reader,其重要部分将同步给定的对象。
// 因为这是个抽象类,所以具体的解释我们放到后续的子类介绍中进行讲解。
// 对于这两种构造方法,不带参数时,将自己作为锁;如果传入了某个Object 对象,则将这个对象其作为锁。
protected Reader(Object lock)
复制代码

método:

// 关闭流,释放资源
abstract  void  close()

// 标记流中的此时当前的位置
void  mark(int readAheadLimit)

// 是否支持标记操作(上面的mark 函数的作用)
boolean  markSupported()

// 读取一个字符
int  read()

// 将字符读入cbuf 数组
int  read(char[] cbuf)

// 将字符读入数字,存入参数中的位置
abstract  int  read(char[] cbuf, int off, int len)

// 将字符读入此字符缓冲区
int  read(CharBuffer target)

// 判断是否准备好读取这个流
boolean  ready()

// 重置流
void  reset()

// 跳过字符
long  skip(long n)
复制代码

Resumir

Lo anterior solo describe la estructura relevante de Reader, pero debido a que Reader en sí mismo es una clase abstracta, el uso específico se discutirá más adelante cuando se presente cada subclase heredada.

Los artículos posteriores presentarán las subclases de Reader en detalle.

Supongo que te gusta

Origin juejin.im/post/7084992608061095967
Recomendado
Clasificación