logo

Diferentes formas de leer un archivo de texto en Java

En Java, existen varias formas de leer un archivo de texto según el tamaño de los datos y el caso de uso. El java.io y paquetes java.nio.file Proporciona varias clases para manejar la lectura de archivos de manera eficiente. Analicemos los enfoques comunes uno por uno.

1. Usando la clase BufferedReader

Lector almacenado en búfer La clase lee texto de una secuencia de caracteres y almacena los caracteres en buffer para una lectura eficiente. A menudo se envuelve alrededor de un Lector de archivos o Lector de flujo de entrada para mejorar el rendimiento.

Sintaxis

BufferedReader en = nuevo BufferedReader (Lector en tamaño int);



Java
import java.io.*; public class UsingBufferReader {  public static void main(String[] args) throws Exception{    // Creating BufferedReader for Input  BufferedReader bfri = new BufferedReader(  new InputStreamReader(System.in));  System.out.print('Enter the Path : ');  // Reading File name  String path = bfri.readLine();  BufferedReader bfro  = new BufferedReader(new FileReader(path));  String st;  while ((st = bfro.readLine()) != null)  System.out.println(st);  } } 


Producción

UsandoBufferReader' title=Producción

2. Clase FileReader para leer archivos de texto

El clase lector de archivos se utiliza para leer archivos de texto en Java. Lee caracteres de un archivo y es adecuado para leer texto sin formato. Los constructores de esta clase asumen que la codificación de caracteres predeterminada y el tamaño del búfer de bytes predeterminado son apropiados. 

Los constructores definidos en esta clase son los siguientes:

  • FileReader (archivo de archivo): Crea un nuevo FileReader dado el archivo para leer
  • Lector de archivos(FileDescriptor fd): Crea un nuevo FileReader dado el FileDescriptor para leer
  • FileReader (nombre de archivo de cadena): Crea un nuevo FileReader dado el nombre del archivo para leer
Java
import java.io.*; public class UsingFileReader {  public static void main(String[] args) throws Exception  {  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  System.out.print('Enter the Path : ');    // Reading File name  String path = br.readLine();  FileReader fr = new FileReader(path);  int i;    // Holds true till there is nothing to read  while ((i = fr.read()) != -1)  // Print all the content of a file  System.out.print((char)i);  } } 


Producción

UsandoFileReader' loading='lazy' title=Producción

3. Clase de escáner para leer archivos de texto

clase de escáner proporciona una manera sencilla de leer archivos de texto y analizar tipos primitivos o cadenas usando expresiones regulares . Divide la entrada en tokens usando un delimitador (por defecto, espacios en blanco).

Ejemplo 1: Con el uso de bucles

Java
import java.io.*; import java.util.Scanner; public class UsingScannerClass  {  public static void main(String[] args) throws Exception  {  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  System.out.print('Enter the Path : ');    // Reading File name  String path = br.readLine();    // pass the path to the file as a parameter  File file = new File(path);    Scanner sc = new Scanner(file);  while (sc.hasNextLine())  System.out.println(sc.nextLine());  } } 


Producción

¿Cuál es el caso en SQL?
UsandoBufferReader' loading='lazy' title=Producción

Ejemplo 2: Sin usar bucles

Java
import java.io.*; import java.util.Scanner; public class ReadingEntireFileWithoutLoop {  public static void main(String[] args)  throws IOException  {  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  System.out.print('Enter the Path : ');    // Reading File name  String path = br.readLine();    File file = new File(path);    Scanner sc = new Scanner(file);  // we just need to use \Z as delimiter  sc.useDelimiter('\Z');  System.out.println(sc.next());  } } 


Producción

Leyendo el archivo completo sin bucle' loading='lazy' title=Producción

4. Leer el archivo completo en una lista

Podemos leer un archivo de texto completo en una Lista usando el Archivos.readAllLines() método de la paquete java.nio.file . Cada línea del archivo se convierte en un elemento de la lista.

Sintaxis

Lista pública estática readAllLines (Ruta rutaCharset cs) lanza IOException

Este método reconoce lo siguiente como terminadores de línea: 

  • u000Du000A -> Retorno de carro + avance de línea
  • u000A -> Avance de línea
  • u000D -> Retorno de carro
Java
import java.io.*; import java.nio.charset.StandardCharsets; import java.nio.file.*; import java.util.*; public class ReadFileIntoList  {  public static List<String> readFileInList(String fileName)  {  // Created List of String  List<String> lines = Collections.emptyList();    try {  lines = Files.readAllLines(  Paths.get(fileName)  StandardCharsets.UTF_8);  } catch(IOException e) {  e.printStackTrace();  }    return lines;  }    public static void main(String[] args)  throws IOException  {    BufferedReader br = new  BufferedReader(new InputStreamReader(System.in));  System.out.print('Enter the Path : ');    // Reading File name  String path = br.readLine();    List l = readFileInList(path);    // Iterator iterating over List  Iterator<String> itr = l.iterator();    while (itr.hasNext())  System.out.println(itr.next());  } } 


Producción

Leer archivo en lista' loading='lazy' title=Producción

5. Leer un archivo de texto como cadena

Podemos leer un archivo de texto completo como una sola cadena en Java. Esto resulta útil cuando desea procesar el contenido del archivo como un todo en lugar de línea por línea.

Sintaxis:

mesa de látex

Datos de cadena = new String(Files.readAllBytes(Paths.get(fileName)));

Ejemplo:

Java
package io; import java.nio.file.*; public class ReadTextAsString {  public static String readFileAsString(String fileName)  throws Exception  {  String data = '';  data = new String(  Files.readAllBytes(Paths.get(fileName)));  return data;  }  public static void main(String[] args) throws Exception  {  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  System.out.print('Enter the Path : ');    // Reading File name  String path = br.readLine();    String data = readFileAsString(path);    System.out.println(data);  } } 

Producción

LeerTextoComoCadena' loading='lazy' title=Producción

Crear cuestionario