Errores III : Constructores y archivos

Aqui te dejo un ejemplo para que veas una manera elegante de manejar todo esto. Fijate que la clase archivo entrada al construirla abre el archivo. Y da los errores apropiados. Igualmente fijate en el finally vacío. No queremos que justo al final de abrir el archivo lo vuelva a cerrar.

//LimpiezaYArchivo.java
import java.io.*;
class ArchivoEntrada{
	private BufferedReader entrada;
	ArchivoEntrada(String nombre) throws Exception{
		try{
			entrada = new BufferedReader( new FileReader(nombre) );
			// podría lanzar excepcion
		}catch(FileNotFoundException e){
			System.err.println("no se pudo abrir el archivo "+ nombre);
			// no se ha abierto
			throw e;
		}catch(Exception e){
			// todas las demas excepciones deben cerrarlo
			try{
				entrada.close();
			}catch(IOException e2){
				System.err.println("no se pudo cerrar el archivo "+ nombre);
			}
		throw e;
		}finally {
			// no cerrarlo aqui porque no se ha abierto
		}
	}
	String leerLinea(){
		String s;
		try{
			s= entrada.readLine();
		}catch(IOException e){
			System.err.println("no se pudo leer el archivo ");
			s= "errrrror";
		}
		return s;
	}
	void cerrar(){
		try{
			entrada.close();
		}catch(IOException e2){
			System.err.println("no se pudo cerrar el archivo ");
		}
	}
}
public class LimpiezaYArchivo{
	public static void main(String[] args){
		try{
			ArchivoEntrada archivo = new ArchivoEntrada("LimpiezaYArchivo.java");
			String s;
			int i = 1;
			while ( (s= archivo.leerLinea() ) != null){
			System.out.println(""+ i++  + ": " + s);
			}
			archivo.cerrar();
		}catch(Exception e){
			System.err.println("capturado en el metodo main, e.printStackTrace()"  );
			 e.printStackTrace(System.err);
		}
	}
}
 
java/22.txt · Última modificación: 2008/05/13 10:00 (editor externo)
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki