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:
- Usando Clase BufferedReader
- Usando clase de escáner
- Usando la clase de lector de archivos
- Leer el archivo completo en una lista
- 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>