Manejo de archivos

5
CRUV-FIEC Programación Orientada a Objetos Introducción a los Archivos Conocimientos Previos En este punto es conveniente recordar el concepto de flujo y las diferencias de su manejo según las clases java que se utilicen. Hasta el momento hemos utilizado la fuente estándar (System.in -- teclado) y el destino (System.out -- pantalla), con la siguiente secuencia de creación de objetos de las clases necesarias del paquete java.io. //Creación del flujo para leer datos InputStreamReader isr=new InputStreamReader(System.in); //Creación del filtro para optimizar la lectura de datos BufferedReader br=new BufferedReader(isr); System.out.print("Teclea el primer numero: "); //Lectura de datos mediante el método readLine() String texto1=br.readLine(); System.out.println("Despliega los resultados….”); Adicionalmente se hizo énfasis en la importancia de controlar los posibles errores de entrada y salida (excepciones) con el try …catch. Archivos o ficheros o files Java puede almacenar y leer diferentes tipos de información de archivos tales como: binarios, objetos java, texto, comprimidos, etc. En esta clase nos ocuparemos de los archivo de texto y orientaremos las operaciones de lectura y grabación de registros o líneas, de manera similar a como tratamos los objetos de entrada y salida por defecto, eso significa que usaremos las mismas clases para manejar archivos. Java nos ofrece la clase FILE que permite crear instancias asociadas con el nombre de un archivo, no con su contenido, pero que facilita el manejo de directorios y de archivos en los subdirectorios, cambiar nombres, verificar existencia de archivos, etc, como ejemplo tenemos: Metodo Propósito Diego Santimateo G.

description

Programación JAVA Manejo de archivos

Transcript of Manejo de archivos

Page 1: Manejo de archivos

CRUV-FIECProgramación Orientada a Objetos

Introducción a los Archivos

Conocimientos Previos

En este punto es conveniente recordar el concepto de flujo y las diferencias de su manejo según las clases java que se utilicen. Hasta el momento hemos utilizado la fuente estándar (System.in -- teclado) y el destino (System.out -- pantalla), con la siguiente secuencia de creación de objetos de las clases necesarias del paquete java.io.

//Creación del flujo para leer datosInputStreamReader isr=new InputStreamReader(System.in);

//Creación del filtro para optimizar la lectura de datosBufferedReader br=new BufferedReader(isr);System.out.print("Teclea el primer numero: ");

//Lectura de datos mediante el método readLine()String texto1=br.readLine();

System.out.println("Despliega los resultados….”);

Adicionalmente se hizo énfasis en la importancia de controlar los posibles errores de entrada y salida (excepciones) con el try …catch.

Archivos o ficheros o files

Java puede almacenar y leer diferentes tipos de información de archivos tales como: binarios, objetos java, texto, comprimidos, etc. En esta clase nos ocuparemos de los archivo de texto y orientaremos las operaciones de lectura y grabación de registros o líneas, de manera similar a como tratamos los objetos de entrada y salida por defecto, eso significa que usaremos las mismas clases para manejar archivos.

Java nos ofrece la clase FILE que permite crear instancias asociadas con el nombre de un archivo, no con su contenido, pero que facilita el manejo de directorios y de archivos en los subdirectorios, cambiar nombres, verificar existencia de archivos, etc, como ejemplo tenemos:

Metodo Propósito

boolean exists() Verifica existencia del archivo

boolean isFile() Verifica si es un archivo

boolean isDirectory() … o un directorio

String[] list() Retorna nombres de archivos y directorios

String getName() Devuelve nombre de un directorio o archivo

String getPath() Devuelve la ruta o path de un archivo o directorio

Por otra parte observemos como definimos y preparamos un archivo para su lectura o grabación.

Diego Santimateo G.

Page 2: Manejo de archivos

CRUV-FIECProgramación Orientada a Objetos

Con FileReader creamos un objeto para asociar el nombre lógico del archivo con su nombre físico o contenido. El constructor de FileReader puede aceptar un objeto de la clase File o un nombre de archivo capturado o leído de otro archivo.

FileReader arch1 = new FileReader(“nombre del archivo.txt”);

Usamos la clase BufferedReader ya conocida, para utilizar su método readLine y leer cada línea del archivo de texto.

BufferedReader in = new BufferedReader(arch1); String s = new String();while((s = in.readLine())!= null){

// se procesa la línea leída}Compruebe la lectura de un archivo de texto leyendo cada línea de su contenido

y desplegándola en la consola, usando la siguiente codificación. Prepare tres archivos de texto, uno que corresponda a un programa Java previamente utilizado, otro de un documento HTML (copie el ejemplo de: http://www.programacion.com/html/tutorial/curso/3/ y

guárdelo en la misma carpeta que contiene su programa Java, con la extensión .html) y otro creado con el bloc de notas.

import java.io.*;import javax.swing.*;public class LeeconReader {public static void main(String[] args) { String archivoName; archivoName = JOptionPane.showInputDialog(null, "Indique nombre de archivo:"); try { FileReader arch1 = new FileReader(archivoName); BufferedReader in = new BufferedReader(arch1); String s = new String();

while((s = in.readLine())!= null) //lectura del archivo System.out.println("\nRegistro: "+ s);

try {in.close();

} catch ( IOException e )

{System.err.println( "El archivo no se pudo cerrar correctamente" );System.exit( 1 );

}

System.exit(0); //cierra hilo abierto por ventana de diálogo } catch (Exception e) { System.err.println("***Error al leer o abrir el archivo...\n" +e); }

} //fin main} // fin de la clase LeeconReader

En el siguiente ejemplo se utiliza la subclase LineNumberReader de la clase

BufferedReader en consecuencia, también contiene el método readLine(). Con esta clase se puede llevar el control del número de línea que se está leyendo o procesando.

Diego Santimateo G.

Page 3: Manejo de archivos

CRUV-FIECProgramación Orientada a Objetos

Revise cuidadosamente y pruebe el programa con los archivos utilizados en el ejemplo anterior./* Ejemplo de programa que lee un archivo secuencial con el método readLine de la clase BufferedReader*/import java.io.*;public class LeeNumeroRegistro{ public static void main(String[] args) throws Exception{ File file = null; FileReader freader = null; LineNumberReader lnreader = null; //tiene el método readLine try{ file = new File("dato.txt"); freader = new FileReader(file); lnreader = new LineNumberReader(freader); String line = ""; while ((line = lnreader.readLine()) != null){ System.out.println("Linea" + lnreader.getLineNumber() + ": " + line); } } finally{ // cuando termina el try se realize finally freader.close(); lnreader.close(); } }}

Con el próximo ejemplo se copia un archivo, pero la lectura se realiza sin usar BufferedReader, solo FileReader y el método read. Se crea un nuevo archivo datos1.txt. Verifica su contenido y comenta. ¿Puedes copiar el mismo archivo usando BufferedReader? Intenta grabar usando la clase FileWriter y PrintWriter con el método println, de manera similar a como se usa FileReader, BufferedReader y readline. No olvides comentar. Conviene mostrar resultados al facilitador.

import java.io.*;// No usa Buffered Reader para leer

public class LeeconRead { public static void main(String[] args) throws IOException {

File inputFile = new File("dato.txt"); //archivo de entradaFile outputFile = new File("datos1.txt"); //archivo de salida

FileReader in = new FileReader(inputFile); FileWriter out = new FileWriter(outputFile); int c;

while ((c = in.read()) != -1 ) //método de FileReader { out.write(c); System.out.println("\n Archivo:\n "+ c);

} in.close(); out.close(); }}

En caso de dudas, inquietudes o si simplemente quieres hacer un comentario, está disponible un foro en Synergia, para compartir al respecto.

Diego Santimateo G.

Page 4: Manejo de archivos

CRUV-FIECProgramación Orientada a Objetos

Experimenta con el siguiente ejemplo, identifica clases, objetos y métodos. Determina para qué sirve el siguiente programa y expresa los resultados de tu experiencia en el foro. ¿Qué cosas descubriste?

import java.io.FileReader;

public class LeeconRead {/* Este programa sirve para: */

  public static void main(String args[]) {    try {            FileReader fr = new FileReader(“su.archivo”]);       int i;       while ((i = fr.read()) != -1) {         char c = (char) i; System.out.print("\ncaracter ="+ c);      }

      fr.close();    }  catch (Exception e) {       System.out.println("Exception: " + e);     }  } // fin del main()} // fin de la clase

Hasta la próxima clase, espero que la sigan pasando muy bien.

Sugerencia: Investiga los métodos de cada una de las clases utilizadas en los ejemplos.

Referenciashttp://www.iua.upf.es/~hsolis/PIII/sesion08.html http://www.cica.es/formacion/JavaTut/Intro/tabla.html http://www.javacoffeebreak.com/books/extracts/javanotesv3/c10/s2.htmlhttp://www.chuidiang.com/java/novatos/editor/leer_escribir_fichero.php http://www.programacion.com/java/tutorial/excepciones/

Diego Santimateo G.