La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Archivos de Texto. Introducción Los archivos son una secuencia de bits que se guarda en el disco duro. La ventaja de utilizar archivos es que los datos.

Presentaciones similares


Presentación del tema: "Archivos de Texto. Introducción Los archivos son una secuencia de bits que se guarda en el disco duro. La ventaja de utilizar archivos es que los datos."— Transcripción de la presentación:

1 Archivos de Texto

2 Introducción Los archivos son una secuencia de bits que se guarda en el disco duro. La ventaja de utilizar archivos es que los datos que guardemos no son volátiles (a diferencia de la memoria) y por lo tanto podemos verlos después de reiniciar la computadora o en otra computadora. Los archivos de computadora, por convención cuentan con diferentes extensiones. Por lo regular las extensiones son de tres letras y nos permiten saber el tipo de archivo. Es importante cuando utilizamos archivos pensar en que el tipo de extensión sea congruente con el archivo.

3 Archivos de Texto Para poder leer archivos de texto en Java debemos crear un objeto de tipo BufferedReader. BufferedReader es una clase que contiene métodos predefinidos para poder leer de una secuencia de bits.BufferedReader Para poder guardar archivos de texto en Java debemos crear un objeto de tipo PrintWriter. PrintWriter es una clase que contiene métodos predefinidos para meter datos a una secuencia de bits.PrintWriter Puedes hacer click en los nombres para ver el API que contiene muchos métodos útiles.

4 BufferedReader El constructor que vamos a utilizar para crear un BufferedReader es: BufferedReader fileIn = new BufferedReader(new FileReader(fileName); Ya que tenemos el objeto tipo BufferedReader podemos utilizar varios métodos para leer, él más común es: fileIn.readLine(); Este método lee una línea y la devuelve o devuelve null si llegamos al final del archivo y no hay nada que leer.

5 BufferedReader Es importante recordar cuando trabajamos con archivos que cada que leemos o escribimos a un archivo debemos hacerlo dentro de un try. Un try es un manejador de excepciones, cuando sucede un error en la ejecución de nuestro programa ejecuta ciertas instrucciones dependiendo del tipo de error que sucedió.

6 Uso de try n1 / n2 podría ser una división entre cero, por lo tanto es una buena práctica de programación utilizar un try para que si fue una división entre 0 el programa maneje el error (regularmente imprimiendo un mensaje de error). try { int n1 = 1; int n2 = 0; double r = n1 / n2; //Aqui hay un error porque //no podemos dividir entre 0!!! } catch (ArithmeticException ae) { //Manejar la excepcion; } finally { System.out("Ya termine!"); } Primero ponemos try y abrimos una llave Lo que se encuentra en un finally se ejecuta hasta el final, sin importar si el código se ejecutó sin errores.

7 BufferedReader Los dos tipos de excepciones que debemos atrapar al leer archivos son IOException (se genera normalmente porque el disco está lleno o protegido contra escritura/lectura) y FileNotFoundException (se genera porque el nombre de archivo no es válido) try { BufferedReader fileIn = new BufferedReader( new FileReader(fileName)); String s = fileIn.readLine(); } catch (IOException ioe) { } catch (FileNotFoundException fnfe) { }

8 BufferedReader Otro método muy importante es el método fileIn.read(); Este método nos permite leer un solo carácter del flujo de datos. El método regresa un número (int) del 1 al 65535 si puede leer del archivo o regresa -1 si no. try { BufferedReader fileIn = new BufferedReader( new FileReader(fileName)); int i = fileIn.read(); //Iniciamos una variable a la que //vamos a leer char c = (char) i; //Como lo que leimos es un int debemos // hacer un cast a char } catch (IOException ioe) { } catch (FileNotFoundException fnfe) { }

9 BufferedReader Ya que el método read nos devuelve -1 cuando se termina el archivo podemos utilizar un while que siga leyendo caracteres hasta encontrar el final de archivo. try { BufferedReader fileIn = new BufferedReader( new FileReader(fileName)); int i = 0; while (i != -1) { i = fileIn.read(); char c = (char) i; } } catch (IOException ioe) { } catch (FileNotFoundException fnfe) { }

10 Vamos a hacer un ejercicio para entender mejor como funcionan los archivos de texto. El ejercicio consiste en leer cuantas veces aparece una letra en un archivo. Con los métodos que hemos visto hay dos maneras de resolver este problema: la primera es leer todo el archivo de texto con el método readLine() y después buscar ahí todas las letras. El otro método sería leer letra por letra y comparar en cada lectura. Ejercicios

11 Ninguna de las dos maneras es peor que la otra sino que depende de lo que haga el programa y las limitaciones que nos pongan. En este caso sería prudente utilizar la segunda porque es más sencilla. try { int suma = 0; //Ponemos una variable donde llevemos la suma BufferedReader fileIn = new BufferedReader( new FileReader(fileName)); //Creamos el BufferedReader int i = 0; while (i != -1) { i = fileIn.read(); char c = (char) i; if (c == letra) suma++; } } catch (IOException ioe) { } catch (FileNotFoundException fnfe) { }

12 Si te fijas el ejercicio se parece mucho a los ejemplos anteriores, esa es una de las ventajas de los archivos de texto: la sintaxis es muy parecida siempre. Por último es importante que una vez que terminamos de utilizar el archivo lo cerremos utilizando el método close() del objeto BufferedReader que creamos. BufferedReader

13 String fileName = "Texto.txt"; //Se declara desde aqui para que no haya error en el finally BufferedReader fileIn = null; try { fileIn = new BufferedReader(new FileReader(fileName)); String s = fileIn.readLine(); System.out("La primera linea es: " + s); } catch (IOException ioe) { System.out("Error, disco protegido contra lectura"); } catch (FileNotFoundException fnfe) { System.out("Error, no se encuentra el archivo"); } finally { if (fileIn != null) { try { /** * Una vez que termine de leer el archivo es * importante cerrarlo para que otros programas lo * puedan abrir y para que los cambios se guarden. */ fileIn.close(); //Es importante cerrar el archivo } catch(IOException ioe) { }

14 Ejercicio de Tarea Un hospital necesita saber la temperatura más alta y más baja de sus paciente que están conectados a una máquina que realiza reportes cada hora en el siguiente formato: Debido a que los doctores no tienen tiempo para analizar los resultados de cada paciente nos han pedido desarrollar un programa que les diga el máximo y mínimo de la lista.

15 Ejercicio de Tarea Primero tienes que decidir que método de lectura es más conveniente para resolver este ejercicio. Fíjate que los números están separados por líneas. Otra nota importante es que cuando leemos de un archivo utilizando el método readLine() nos regresa un String y no números. Cuando leemos con el método read() nos devuelve un número que representa el carácter que leyó, NO el número. Por ejemplo, si el archivo tiene un 9 el método read() nos devuelve 57 (el código ASCII del carácter '9') y NO 9 como podríamos esperar.

16 El constructor que vamos a utilizar para crear un PrintWriter es: PrintWriter fileOut = new PrintWriter(new FileWriter(fileName); Ya que tenemos el objeto PrintWriter podemos utilizar varios métodos para escribir, los más comunes son: fileOut.print(String); fileOut.println(String); Estos dos métodos reciben un String y lo imprimen en el archivo, el segundo método le pone un carácter de fin de línea al final. PrintWriter

17 Al igual que al leer debemos recordar utilizar un try. Cuando utilizamos el PrintWriter todo entra a un buffer y una vez que terminemos de escribir los datos debemos recordar utilizar el método flush() del PrintWriter para escribir todo al archivo. Al terminar de usar el archivo también debemos recordar que debemos cerrarlo mediante el método close() del PrintWriter. PrintWriter

18 String fileName = "Texto.txt"; PrintWriter fileOut = null; try { fileOut = new PrintWriter(new FileWriter(fileName)); String s = "Una linea de texto"; fileOut.println(s); fileOut.flush(); } catch (IOException ioe) { System.out("Error, disco protegido contra lectura"); } catch (FileNotFoundException fnfe) { System.out("Error, no se encuentra el archivo"); } finally { if (fileIn != null) { try { fileIn.close(); } catch (IOException ioe) { }


Descargar ppt "Archivos de Texto. Introducción Los archivos son una secuencia de bits que se guarda en el disco duro. La ventaja de utilizar archivos es que los datos."

Presentaciones similares


Anuncios Google