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
JavaBufferedReader en = nuevo BufferedReader (Lector en tamaño int);
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
Producción2. 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
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
Producción3. 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
Javaimport 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?
ProducciónEjemplo 2: Sin usar bucles
Javaimport 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
Producción4. 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
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
Producción5. 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:
Javapackage 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
Producción Crear cuestionario