Clases BufferedReader y BufferedWriter para ficheros de texto en Java

java_base_web

Hola a todos, hoy os explicare como utilizar las clases BufferedReader y BufferedWriter en Java.

Las clases BufferedReader y BufferedWriter las podemos encontrar en java.io.

Estas clases tienen la misma función que FileReader y FileWriter, leer y escribir en ficheros, pero BufferedReader y BufferedWriter optimizan estas funciones.

Se crean igual que FileReader y FileWriter, pero como parámetro insertaremos un objeto FileReader para BufferedReader y un objeto FileWriter para BufferedWriter.

FileWriter fw=new FileWriter("D:\\fichero1.txt");
FileReader fr=new FileReader("D:\\fichero1.txt");<br /><br />BufferedReader br=new BufferedReader(fr);
BufferedWriter bw=new BufferedWriter(fw);

Otra forma de crear los buffered es asi:

BufferedReader br=new BufferedReader(new FileReader("D:\\fichero1.txt"));
BufferedWriter bw=new BufferedWriter(new FileWriter("D:\\fichero1.txt"));

La mayor ventaja de los buffered es con el BufferedReader que nos permite leer una linea completa, en lugar de carácter a carácter como hacia FileReader, cuando el fichero termina, devuelve null, no un -1 como en FileReader.

Con BufferedWriter también podemos añadir una linea, como si pulsáramos un Enter.

Veamos un ejemplo practico.

import java.io.*; //Importamos todas las clases de java.io.
public class FicheroTextoBufferedApp {
	public static void main(String[] args) {
		try(BufferedReader br=new BufferedReader(new FileReader("D:\\fichero1.txt"));
			BufferedWriter bw=new BufferedWriter(new FileWriter("D:\\fichero1.txt"));){
			//Escribimos en el fichero
			bw.write("Esto es una prueba usando Buffered");
			bw.newLine();
			bw.write("Seguimos usando Buffered");
			//Guardamos los cambios del fichero
			bw.flush();
			//Leemos el fichero y lo mostramos por pantalla
			String linea=br.readLine();
			while(linea!=null){
				System.out.println(linea);
				linea=br.readLine();
			}
		}catch(IOException e){
			System.out.println("Error E/S: "+e);
		}
	}
}

Ahora veremos el mismo ejemplo pero con métodos.

import java.io.*; //Importamos todas las clases de java.io.
public class FicheroTextoBufferedApp {
	public static void main(String[] args) {
		try(BufferedReader br=new BufferedReader(new FileReader("D:\\fichero1.txt"));
			BufferedWriter bw=new BufferedWriter(new FileWriter("D:\\fichero1.txt"));){
			escribeFichero(bw);
			//Guardamos los cambios del fichero
			bw.flush();
			leeFichero(br);
		}catch(IOException e){
			System.out.println("Error E/S: "+e);
		}
	}
	public static void escribeFichero(BufferedWriter bw) throws IOException{
		//Escribimos en el fichero
		bw.write("Esto es una prueba usando Buffered");
		bw.newLine();
		bw.write("Seguimos usando Buffered");
	}
	public static void leeFichero(BufferedReader br) throws IOException{
		//Leemos el fichero y lo mostramos por pantalla
		String linea=br.readLine();
		while(linea!=null){
			System.out.println(linea);
			linea=br.readLine();		}
	}
}

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Etiquetas

3 comments

  1. Amigo como hago para crear un diccionario de ingles a español, leyendo un .txt

  2. Buenas noches,
    ¿podría utilizarse un BufferedWriter para escribir únicamente a un elemento en un fichero xml?
    Actualmente tengo este problema y todavía no he encontrado la forma de resolverlo.
    La necesidad viene porque en mi objeto java, que se mapea contra xml utilizando jaxb, le llega un flujo de datos continuo (valores double) y necesito ir grabando tal cual llegan a un elemento en concreto del fichero xml.
    Muchas gracias.

  3. Muy buenas, me parece muy interesante y fácil de comprender tu trabajo pero quería comentarte que cuando accedo a “Clases FileInputStream y FileOutputStream para ficheros binarios” me trae a esta dirección, así que me he quedado con ganas de ver los FileInputStream y FileOutputStream

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *