Introducción y resumen de los conceptos relacionados con la entrada y salida de Java (archivo, flujo de E/S) (11) (FileReader)

¡Acostúmbrate a escribir juntos! Este es el día 11 de mi participación en el "Nuevo plan diario de Nuggets · Desafío de actualización de abril", haga clic para ver los detalles del evento .

El último artículo presenta y resume los conceptos relacionados con la entrada y salida de Java (archivo, flujo de E/S) (10) El concepto de flujo de entrada de caracteres Lector se presenta aproximadamente. En este artículo, daremos una explicación detallada de la subclase de Lector: FileReader, incluidos el concepto y el uso.

Lector de archivos

Concepto de FileReader

FileReader es la clase de implementación de Reader más utilizada, que es muy similar a FileInputStream, excepto que FileReader lee en caracteres; FileInputStream lee en bytes.

De manera análoga al FileInputStream mencionado anteriormente, podemos inferir que FileReader se usa para leer contenido de texto. Dependiendo del esquema de codificación, un carácter puede ser equivalente a uno o más bytes. Por ejemplo, un carácter chino puede estar representado por dos bytes o tres bytes en diferentes codificaciones.

Fundamentos de FileReader

  • Cuando se usan operaciones de objetos de FileReader para leer e ingresar archivos, JVM primero lee el texto, luego convierte su formato al formato de codificación Unicode y luego opera; cuando se usa FileWriter para la salida de archivos de texto, convierte los datos codificados en Unicode en el formato de codificación de el host local (como ASCII o GBK), y luego la salida.

  • Para FileReader y FileWriter, de hecho, los métodos de operación de las dos clases son básicamente los mismos que los de FileInputStream y FileOutputStream, como se mencionó anteriormente, el primero se basa en caracteres y usa caracteres como unidades, el segundo se basa en bytes y usa bytes como unidad básica de operación.

Si los archivos operativos no son archivos de texto (archivos de texto como txt, archivos que no son de texto como música e imágenes), será mejor que usemos FileInputStream y FileOutputStream para la entrada y salida de archivos. Debido a que se transmite en unidades de caracteres, un código descuidado se distorsionará o el archivo se dañará.

Método de introducción de FileReader

Método de construcción

// 已存在File 对象,根据此File 对象创建一个FileReader
FileReader(File file)

// 已存在FileDescriptor 的情况下创建一个FileReader
FileReader(FileDescriptor fd)

// 给定文件名,根据这个文件名创建FileReader
FileReader(String fileName)
复制代码

Método común

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

// 这个就和“字符”的概念有关了,作用是返回这个这个流使用的字符编码的名称
String getEncoding()   

// 读取单个字符(注意:返回的值为读入字符对应的int值,范围:0~65535)
int read()

// 按照参数,将字符读入数组中,存在于数组的某一部分。返回值是读入字符的个数
int read(char[] cbuf, int offset, int length)

// 用来判断这个流是否已经准备好,是否可以用于读取。返回值为读入字符的个数
boolean ready()
复制代码

Ejemplo de uso

Use la clase FileWriter para escribir una cadena de caracteres en el archivo y luego use FileReader para leer el contenido escrito.

public static void main(String[] args) throws Exception {
  FileWriter fileWriter = new FileWriter("copy.txt");
  // 我们可以回忆一下,在使用FileOutputStream 的时候,可以用个字节数组作为"中间层"
  // 而使用FileWriter 的时候可以在此可以直接写入字符串,不用转化为字节数组
  fileWriter.write ("12345");
  fileWriter.close();

  char[] chars = new char[16];
  // 读取copy.txt 文件
  FileReader in = new FileReader("copy.txt");
  int len = in.read(chars);
  System.out.println(new String(chars,0,16));
  in.close();
}
复制代码

Resumir

En este artículo, presentamos el uso de FileReader. De hecho, podemos ver que el uso es similar a FileInputStream, la diferencia es que FileReader se basa en caracteres, mientras que FileInputStream se basa en bytes.

En el siguiente artículo continuamos introduciendo otras subclases de la clase Reader.

Supongo que te gusta

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