Buffered -acelerando el acceso a ficheros

  • Clase Reader
    • FileReader
    • BufferedReader*
  • Clase Writer
    • FileWriter
    • BufferedWriter*

Para evitar que cada lectura o escritura acceda directamente al fichero, se puede utilizar un buffer intermedio entre el disco y el stream.

Si queremos leer o escribir líneas completas, usaremos BufferedReader y BufferedWriter; con sus métodos readLine() y write() junto con newLine() respectivamente.

La clase BufferedWriter dispone de métodos para escribir líneas completas

Ejemplo: LeerficheroBuffer

import java.io.*;
public class LeerFichTextoBuf {
  public static void main(String[] args) {
  try{
      File fic = new File("FichTexto.txt");//declara fichero
  	BufferedReader fichero = new BufferedReader(
                   	new FileReader(fic));
  	String linea;
  	while((linea = fichero.readLine())!=null)     
    	System.out.println(linea);	 
  	fichero.close();
    }
    catch (FileNotFoundException fn ){                 	 
           	System.out.println("No se encuentra el fichero");}
    catch (IOException io) {
           	System.out.println("Error de E/S ");}          	 
  } }

Ejemplo: EscribirFicheroTextoBuffer

import java.io.*;
public class EscribirFichTextoBuf {
  public static void main(String[] args) {
  try{ 	 
  	BufferedWriter fichero = new BufferedWriter  (new FileWriter("FichTexto1.txt"));
  	for (int i=1; i<11; i++){
    	fichero.write("Fila numero: "+i); //escribe una línea
    	fichero.newLine(); //escribe un salto de línea
  	}
  	fichero.close();
  	}
    catch (FileNotFoundException fn ){                 	 
           	System.out.println("No se encuentra el fichero");}
    catch (IOException io) {
           	System.out.println("Error de E/S ");}
  }
}

Otra clase para escribir en un fichero

PrintWriter: También para escribir en un fichero tenemos la clase PrintWrite que deriva de Writer y con los métodos se puede escribir en fichero de forma similar a System.out

  • print(String s)
  • println(String s)

http://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html

Ejercicio:

Reescribe el ejemplo anterior EscribirFichTextoBuf utilizando la clase  PrintWrite y su método println.