logo

Diferentes formas de leer un archivo de texto en Java

Existen varias formas de escribir y leer un archivo de texto en Java. esto es necesario al tratar con muchas aplicaciones. Hay varias formas de leer un archivo de texto sin formato en Java, p. puede utilizar FileReader, BufferedReader o Scanner para leer un archivo de texto. Cada utilidad ofrece algo especial, p. BufferedReader proporciona almacenamiento en búfer de datos para una lectura rápida y Scanner proporciona capacidad de análisis.

Métodos:



  1. Usando Clase BufferedReader
  2. Usando clase de escáner
  3. Usando la clase de lector de archivos
  4. Leer el archivo completo en una lista
  5. Leer un archivo de texto como cadena

También podemos usar BufferReader y Scanner para leer un archivo de texto línea por línea en Java. Luego Java SE 8 introduce otra clase Stream java.util.stream.Stream lo que proporciona una forma más lenta y eficiente de leer un archivo.

Nota de consejo: También se han evitado las prácticas de escribir buen código, como vaciar/cerrar flujos, manejo de excepciones, etc., para que los principiantes también comprendan mejor los códigos.

Analicemos cada uno de los métodos anteriores con mayor profundidad y, lo más importante, implementándolos a través de un programa Java limpio.



1. Clase BufferedReader para leer archivos de texto

Este método lee texto de una secuencia de entrada de caracteres. Tiene un buffer para una lectura eficiente de caracteres, matrices y líneas. Se puede especificar el tamaño del búfer o se puede utilizar el tamaño predeterminado. El valor predeterminado es lo suficientemente grande para la mayoría de los propósitos. En general, cada solicitud de lectura realizada a un lector provoca que se realice una solicitud de lectura correspondiente del carácter subyacente o flujo de bytes. Por lo tanto, es recomendable incluir un BufferedReader alrededor de cualquier lector cuyas operaciones de lectura () puedan ser costosas, como FileReaders y InputStreamReaders, como se muestra a continuación:

Sintaxis

BufferedReader in = new BufferedReader(Reader in, int size);>

Ejemplo



Java


excepción personalizada en java



// Java Program to illustrate Reading from FileReader> // using BufferedReader Class> // Importing input output classes> import> java.io.*;> // Main class> public> class> GFG {> >// main driver method> >public> static> void> main(String[] args)>throws> Exception> >{> >// File path is passed as parameter> >File file =>new> File(> >'C:UserspankajDesktop est.txt'>);> >// Note: Double backquote is to avoid compiler> >// interpret words> >// like est as (ie. as a escape sequence)> >// Creating an object of BufferedReader class> >BufferedReader br> >=>new> BufferedReader(>new> FileReader(file));> >// Declaring a string variable> >String st;> >// Condition holds true till> >// there is character in a string> >while> ((st = br.readLine()) !=>null>)> >// Print the string> >System.out.println(st);> >}> }>

>

>

Producción

If you want to code refer to techcodeview.com>

2. Clase FileReader para leer archivos de texto

Clase de conveniencia para leer archivos de personajes. 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(File file): crea un nuevo FileReader, dado el archivo para leer FileReader(FileDescriptor fd): crea un nuevo FileReader, dado el FileDescriptor para leer FileReader(String fileName): crea un nuevo FileReader, dado el nombre del archivo para leer

Ejemplo

Java




// Java Program to Illustrate reading from> // FileReader using FileReader class> // Importing input output classes> import> java.io.*;> // Main class> // ReadingFromFile> public> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)>throws> Exception> >{> >// Passing the path to the file as a parameter> >FileReader fr =>new> FileReader(> >'C:UserspankajDesktop est.txt'>);> >// Declaring loop variable> >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

If you want to code refer to techcodeview.com>

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

Un escáner de texto simple que puede analizar cadenas y tipos primitivos usando expresiones regulares. Un escáner divide su entrada en tokens utilizando un patrón delimitador, que de forma predeterminada coincide con los espacios en blanco. Los tokens resultantes se pueden convertir en valores de diferentes tipos utilizando los siguientes métodos.

Ejemplo 1: Con el uso de bucles

Java


¿cuanto pesa kat timpf?



// Java Program to illustrate> // reading from Text File> // using Scanner Class> import> java.io.File;> import> java.util.Scanner;> public> class> ReadFromFileUsingScanner {> >public> static> void> main(String[] args)>throws> Exception> >{> >// pass the path to the file as a parameter> >File file =>new> File(> >'C:UserspankajDesktop est.txt'>);> >Scanner sc =>new> Scanner(file);> >while> (sc.hasNextLine())> >System.out.println(sc.nextLine());> >}> }>

>

>

Producción

If you want to code refer to techcodeview.com>

Ejemplo 2: Sin usar bucles

Java


¿Puede una clase abstracta tener un constructor?



// Java Program to illustrate reading from FileReader> // using Scanner Class reading entire File> // without using loop> import> java.io.File;> import> java.io.FileNotFoundException;> import> java.util.Scanner;> public> class> ReadingEntireFileWithoutLoop {> >public> static> void> main(String[] args)> >throws> FileNotFoundException> >{> >File file =>new> File(> >'C:UserspankajDesktop est.txt'>);> >Scanner sc =>new> Scanner(file);> >// we just need to use  as delimiter> >sc.useDelimiter(>''>);> >System.out.println(sc.next());> >}> }>

>

>

Producción

If you want to code refer to techcodeview.com>

4. Leer el archivo completo en una lista

Leer todas las líneas de un archivo. Este método garantiza que el archivo se cierre cuando se hayan leído todos los bytes o se produzca un error de E/S u otra excepción de tiempo de ejecución. Los bytes del archivo se decodifican en caracteres utilizando el juego de caracteres especificado.

Sintaxis:

public static List readAllLines(Path path,Charset cs)throws IOException>

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

u000D followed by u000A, CARRIAGE RETURN followed by LINE FEED u000A, LINE FEED u000D, CARRIAGE RETURN>

Ejemplo

Java




// Java program to illustrate reading data from file> // using nio.File> import> java.io.*;> import> java.nio.charset.StandardCharsets;> import> java.nio.file.*;> import> java.util.*;> public> class> ReadFileIntoList {> >public> static> List> >readFileInList(String fileName)> >{> >List lines = Collections.emptyList();> >try> {> >lines = Files.readAllLines(> >Paths.get(fileName),> >StandardCharsets.UTF_8);> >}> >catch> (IOException e) {> >// do something> >e.printStackTrace();> >}> >return> lines;> >}> >public> static> void> main(String[] args)> >{> >List l = readFileInList(> >'C:UserspankajDesktop est.java'>);> >Iterator itr = l.iterator();> >while> (itr.hasNext())> >System.out.println(itr.next());> >}> }>

>

>

Producción

If you want to code refer to techcodeview.com>

5. Leer un archivo de texto como cadena

Ejemplo

Java




// Java Program to illustrate> // reading from text file> // as string in 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> >{> >String data = readFileAsString(> >'C:UserspankajDesktop est.java'>);> >System.out.println(data);> >}> }>

>

>

mvc para java

Producción

If you want to code refer to techcodeview.com>