Programación interactiva. Oscar Bedoya

Programación interactiva Oscar Bedoya [email protected] Archivos Archivos Clase File • Resulta útil para recuperar información acerca de un archivo o directorio, entre la que se encuentra -Longitud del archivo en bytes -Fecha y hora de la última modificación -La ruta absoluta -En caso de ser un directorio, se puede conocer una lista con los nombres de archivos que contiene Además, cuando se tiene solo una referencia a un archivo o un directorio, se puede conocer cuál de los dos es. También se puede saber si realmente existe tal archivo o directorio Archivos Método Descripción boolean canRead() Devuelve true si se puede leer el archivo, en caso contrario devuelve false boolean canWrite() Devuelve true si se puede escribir el archivo, en caso contrario devuelve false boolean exists() Devuelve true si el nombre especificado como argumento en el constructor de File es un archivo o un directorio; en caso contrario devuelve false boolean isFile() Devuelve true si el nombre especificado como argumento en el constructor es un archivo boolean isDirectory() Devuelve true si el nombre especificado como argumento en el constructor es un directorio String getAbsolutePath() Devuelve un String con la ruta absoluta del archivo o directorio String getName() long length() long lastModified() String[] List() Devuelve un String con el nombre del archivo o directorio Devuelve la longitud de un archivo en bytes. Si el objeto File representa a un directorio, se devuelve 0 Devuelve una representación de la hora en la que se hizo la última modificación Devuelve un arreglo de cadenas que representan el contenido del directorio. Devuelve null si el objeto File no es un directorio Archivos Clase File • Los objetos File no abren archivos ni proporcionan herramientas para procesar archivos • Realmente, los objetos File se utilizan frecuentemente con objetos de otras clases de java.io para especificar los archivos o directorios que se van a manipular Archivos • Para crear un objeto de la clase File se especifica el nombre del archivo o directorio que se quiere asociar File objeto = new File(“datos.txt”); • En caso de que el archivo se encuentre dentro de un directorio, se utiliza un constructor que tiene dos parámetros, la ruta y el nombre del archivo File objeto = new File(“interativa/”, “ejemplo.dat”); Archivos • Para especificar un directorio se pasa su nombre al constructor File objeto = new File(“directorio”); Archivos Para leer el contenido de un archivo se debe tener en cuenta lo siguiente: • La clase FileReader se puede utilizar para abrir un archivo • Sin embargo, la clase FileReader no sabe cómo leer líneas de texto • La clase BufferedReader proporciona la funcionalidad de leer líneas de texto, pero no sabe cómo abrir un archivo • Se deben utilizar las clases FileReader y BufferedReader en conjunto para leer la información contenida en un archivo. Esto se conoce como envoltura de objetos de flujo Archivos Para envolver un objeto FileReader en un objeto BufferedReader se pasa el objeto FileReader al constructor de BufferedReader BufferedReader entrada=new BufferedReader(new FileReader(objeto)); Luego, se puede usar la referencia entrada para leer del archivo Archivos El archivo se lee por líneas. El método readLine devuelve en un String el contenido de la línea y avanza a la siguiente línea. En caso de que llegue al final del archivo, readLine devuelve null File objeto = new File(“datos.txt”); BufferedReader entrada=new BufferedReader(new while ((texto=entrada.readLine()) != null ) areatexto.append("\n" + texto ); FileReader(objeto)); Archivos PruebaFile

0 downloads 156 Views 504KB Size

Recommend Stories


GUSTAVO ADOLFO BEDOYA LÓPEZ
DESCRIPCIÓN DEL PROCESO DE INICIACIÓN MUSICAL DE UN GRUPO DE NIÑOS Y NIÑAS ENTRE LOS 8 Y 15 AÑOS DE EDAD PERTENECIENTES A LA COMUNIDAD CRISTIANA ALIAN

LA PIZARRA DIGITAL INTERACTIVA
La Pizarra Digital Interactiva Software de la PDI Smart: Notebook 10. http://www.corazoninmaculado.es/moodle/course/view.php?id=10 Rafael M. Maroto G

Story Transcript

Programación interactiva Oscar Bedoya [email protected]

Archivos

Archivos Clase File

• Resulta útil para recuperar información acerca de un archivo o directorio, entre la que se encuentra -Longitud del archivo en bytes -Fecha y hora de la última modificación -La ruta absoluta -En caso de ser un directorio, se puede conocer una lista con los nombres de archivos que contiene Además, cuando se tiene solo una referencia a un archivo o un directorio, se puede conocer cuál de los dos es. También se puede saber si realmente existe tal archivo o directorio

Archivos Método

Descripción

boolean canRead()

Devuelve true si se puede leer el archivo, en caso contrario devuelve false

boolean canWrite()

Devuelve true si se puede escribir el archivo, en caso contrario devuelve false

boolean exists()

Devuelve true si el nombre especificado como argumento en el constructor de File es un archivo o un directorio; en caso contrario devuelve false

boolean isFile()

Devuelve true si el nombre especificado como argumento en el constructor es un archivo

boolean isDirectory()

Devuelve true si el nombre especificado como argumento en el constructor es un directorio

String getAbsolutePath()

Devuelve un String con la ruta absoluta del archivo o directorio

String getName() long length() long lastModified() String[] List()

Devuelve un String con el nombre del archivo o directorio Devuelve la longitud de un archivo en bytes. Si el objeto File representa a un directorio, se devuelve 0 Devuelve una representación de la hora en la que se hizo la última modificación Devuelve un arreglo de cadenas que representan el contenido del directorio. Devuelve null si el objeto File no es un directorio

Archivos Clase File

• Los objetos File no abren archivos ni proporcionan herramientas para procesar archivos • Realmente, los objetos File se utilizan frecuentemente con objetos de otras clases de java.io para especificar los archivos o directorios que se van a manipular

Archivos • Para crear un objeto de la clase File se especifica el nombre del archivo o directorio que se quiere asociar File objeto = new File(“datos.txt”); • En caso de que el archivo se encuentre dentro de un directorio, se utiliza un constructor que tiene dos parámetros, la ruta y el nombre del archivo File objeto = new File(“interativa/”, “ejemplo.dat”);

Archivos • Para especificar un directorio se pasa su nombre al constructor

File objeto = new File(“directorio”);

Archivos Para leer el contenido de un archivo se debe tener en cuenta lo siguiente: • La clase FileReader se puede utilizar para abrir un archivo • Sin embargo, la clase FileReader no sabe cómo leer líneas de texto • La clase BufferedReader proporciona la funcionalidad de leer líneas de texto, pero no sabe cómo abrir un archivo • Se deben utilizar las clases FileReader y BufferedReader en conjunto para leer la información contenida en un archivo. Esto se conoce como envoltura de objetos de flujo

Archivos Para envolver un objeto FileReader en un objeto BufferedReader se pasa el objeto FileReader al constructor de BufferedReader BufferedReader entrada=new BufferedReader(new FileReader(objeto));

Luego, se puede usar la referencia entrada para leer del archivo

Archivos El archivo se lee por líneas. El método readLine devuelve en un String el contenido de la línea y avanza a la siguiente línea. En caso de que llegue al final del archivo, readLine devuelve null File objeto = new File(“datos.txt”);

BufferedReader entrada=new BufferedReader(new while ((texto=entrada.readLine()) != null ) areatexto.append("\n" +

texto );

FileReader(objeto));

Archivos

PruebaFile

Archivos

Si es un archivo se muestra la ruta, la ruta absoluta y el contenido del archivo

String nombreArchivo = campo.getText(); File objeto = new File(nombreArchivo);

if ( objeto.exists() ) { areatexto.setText("\nRuta:” + objeto.getPath() + "\nRuta absoluta: " + objeto.getAbsolutePath() ); if ( objeto.isFile() ) { try { BufferedReader entrada = new BufferedReader(new FileReader( objeto ) ); String texto; areatexto.append( "\n\nCONTENIDO DEL ARCHIVO: \n" );

while ( ( texto = entrada.readLine() ) != null ) areatexto.append("\n" + texto ); } catch( IOException excepcion ) { JOptionPane.showMessageDialog( this, "ERROR EN ARCHIVO", "ERROR EN ARCHIVO", JOptionPane.ERROR_MESSAGE ); } }

String nombreArchivo = campo.getText(); File objeto = new File(nombreArchivo);

Se utilizan los métodos de la clase File

if ( objeto.exists() ) { areatexto.setText("\nRuta:” + objeto.getPath() + "\nRuta absoluta: " + objeto.getAbsolutePath() ); if ( objeto.isFile() ) { try { BufferedReader entrada = new BufferedReader(new FileReader( objeto ) ); String texto; areatexto.append( "\n\nCONTENIDO DEL ARCHIVO: \n" );

while ( ( texto = entrada.readLine() ) != null ) areatexto.append("\n" + texto ); } catch( IOException excepcion ) { JOptionPane.showMessageDialog( this, "ERROR EN ARCHIVO", "ERROR EN ARCHIVO", JOptionPane.ERROR_MESSAGE ); } }

Archivos

Si es un directorio, se muestra su contenido

if ( objeto.isDirectory() ) { String directorio[] = objeto.list();

areatexto.append( "\n\nContenido del directorio:\n");

}

for ( int i = 0; i < directorio.length; i++ ) areatexto.append( directorio[ i ] + "\n" );

El método list devuelve un arreglo de Strings con los nombres de los subdirectorios y archivos. Se muestra cada elemento del arreglo

Archivos Manejo de archivos con RandomAccessFile

La clase RandomAccessFile proporciona todas las herramientas de las clases FileInputStream, FileOutputStream, DataInputStream y DataOutputStream que permiten escribir en un archivo

Archivos • Para abrir un archivo por medio de la clase RandomAccessFile se pasa al constructor el nombre del archivo y el tipo de permiso RandomAccessFile archivo= new RandomAccessFile(nombre, permiso);

donde permiso es un String que puede ser “r” para indicar que es de solo lectura, “w” para escritura y “rw” para lectura y escritura

Archivos • Para leer de un archivo por medio de la clase RandomAccessFile se utiliza el método readLine() String linea; linea = archivo.readLine();

Archivos Problema: Desarrollar un traductor de tal forma que las palabras se almacenen en un archivo. El proceso de búsqueda de una palabra se realiza sobre el archivo

TraductorX

Archivos Problema: Desarrollar un traductor de tal forma que las palabras se almacenen en un archivo. El proceso de búsqueda de una palabra se realiza sobre el archivo

El formato que se selecciona para almacenar los datos, consiste en colocar la palabra en español, seguido del carácter “#” y luego la palabra en inglés

Archivos Problema: Desarrollar un traductor de tal forma que las palabras se almacenen en un archivo. El proceso de búsqueda de una palabra se realiza sobre el archivo

TraductorX

El formato que se selecciona para almacenar los datos, consiste en colocar la palabra en español, seguido del carácter “#” y luego la palabra en inglés

Archivos • La clase StringTokenizer permite descomponer un String en tokens. Se pasa al constructor una cadena de caracteres y el símbolo que separa los tokens

StringTokenizer tokens = new StringTokenizer(linea,simbolo); • Para conocer el siguiente token, se utiliza el método nextToken() actual = tokens.nextToken(); • Para saber si se tienen más tokens se hace;

tokens.hasMoreTokens()

Archivos Suponga que se tiene lo siguiente: String linea = “LIBRO#BOOK”; StringTokenizer tokens = new StringTokenizer(linea,”#”); System.out.println( tokens.nextToken() ); System.out.println( tokens.nextToken() ); Muestra los dos tokens LIBRO y BOOK

Archivos

Se toma la palabra del campo de texto TFPalabra y se compara con el primer token de la línea. Si coinciden se muestra el siguiente token, sino, se avanza a la siguiente línea

String linea = new String(); String palabra = TFPalabra.getText();

try{ RandomAccessFile archivo = new RandomAccessFile("data.txt", "r"); linea = archivo.readLine(); int encontrado=0; while(linea!=null && encontrado==0){

StringTokenizer tokens = new StringTokenizer(linea, "#"); while (tokens.hasMoreTokens()){ String actual = tokens.nextToken();

} }

if (actual.equals(palabra.toUpperCase()) ){ encontrado=1; TFTraduccion.setText(tokens.nextToken()); } else linea=archivo.readLine();

Se crea un objeto de RandomAccessFile para leer del archivo

String linea = new String(); String palabra = TFPalabra.getText();

try{ RandomAccessFile archivo = new RandomAccessFile("data.txt", "r"); linea = archivo.readLine(); int encontrado=0; while(linea!=null && encontrado==0){

StringTokenizer tokens = new StringTokenizer(linea, "#"); while (tokens.hasMoreTokens()){ String actual = tokens.nextToken();

} }

if (actual.equals(palabra.toUpperCase()) ){ encontrado=1; TFTraduccion.setText(tokens.nextToken()); } else linea=archivo.readLine();

• Si el token coincide con la palabra a traducir se muestra en el campo de texto. • Sino, se avanza a la siguiente línea

Archivos Incorporando JFileChooser para el manejo de archivos

Archivos + data.txt

Archivos Para mostrar el cuadro de dialogo se utiliza el método showOpenDialog JFileChooser selectorArchivo = new JFileChooser(); int resultado = selectorArchivo.showOpenDialog(this); if (resultado == JFileChooser.CANCEL_OPTION) System.out.println("No seleccionó ningun archivo");

if (resultado == JFileChooser.APPROVE_OPTION) File nombreArchivo=selectorArchivo.getSelectedFile();

Archivos Para mostrar el cuadro de dialogo se utiliza el método showOpenDialog JFileChooser selectorArchivo = new JFileChooser(); int resultado = selectorArchivo.showOpenDialog(this); if (resultado == JFileChooser.CANCEL_OPTION) System.out.println("No seleccionó ningun archivo");

if (resultado == JFileChooser.APPROVE_OPTION) //procesar informacion

El método showOpenDialog devuelve un número entero. Para saber si se hizo clic en Cancelar se utiliza la constante JFileChooser.CANCEL_OPTION y cuando se selecciona un archivo se tiene la constante JFileChooser.APPROVE_OPTION

JFileChooser selectorArchivo= new JFileChooser(); int resultado = selectorArchivo.showOpenDialog(this);

if (resultado == JFileChooser.CANCEL_OPTION) System.out.println("No seleccionó ningún archivo"); if (resultado == JFileChooser.APPROVE_OPTION) { File nombreArchivo = selectorArchivo.getSelectedFile() ;

Se muestra el FileChooser. Se considera el caso en que no seleccione ningún archivo

if (nombreArchivo==null || nombreArchivo.getName().equals("")) JOptionPane.showMessageDialog(null, "Nombre de archivo incorrecto”); else { try { RandomAccessFile r = new RandomAccessFile( nombreArchivo , "r"); String linea=r.readLine(); while (linea!=null){ areatexto.append("\n" + linea); datos.addElement(linea); linea = r.readLine(); } r.close();

}

}

} catch(IOException e){ System.out.println("Error al abrir el archivo"); }

JFileChooser selectorArchivo= new JFileChooser(); int resultado = selectorArchivo.showOpenDialog(this); if (resultado == JFileChooser.CANCEL_OPTION) System.out.println("No seleccionó ningún archivo"); if (resultado == JFileChooser.APPROVE_OPTION) { File nombreArchivo = selectorArchivo.getSelectedFile() ;

Se maneja el caso en que no escriba un nombre de archivo válido

if (nombreArchivo==null || nombreArchivo.getName().equals("")) JOptionPane.showMessageDialog(null, "Nombre de archivo incorrecto”); else { try { RandomAccessFile r = new RandomAccessFile( nombreArchivo , "r"); String linea=r.readLine(); while (linea!=null){ areatexto.append("\n" + linea); datos.addElement(linea); linea = r.readLine(); } r.close();

}

}

} catch(IOException e){ System.out.println("Error al abrir el archivo"); }

JFileChooser selectorArchivo= new JFileChooser(); int resultado = selectorArchivo.showOpenDialog(this); if (resultado == JFileChooser.CANCEL_OPTION) System.out.println("No seleccionó ningún archivo"); if (resultado == JFileChooser.APPROVE_OPTION) { File nombreArchivo = selectorArchivo.getSelectedFile() ; if (nombreArchivo==null || nombreArchivo.getName().equals("")) JOptionPane.showMessageDialog(null, "Nombre de archivo incorrecto”); else { try { RandomAccessFile r = new RandomAccessFile( nombreArchivo , "r"); String linea=r.readLine(); while (linea!=null){ areatexto.append("\n" + linea); datos.addElement(linea); linea = r.readLine(); } r.close();

}

}

Cada línea del archivo se guarda temporalmente en un vector

} catch(IOException e){ System.out.println("Error al abrir el archivo"); }

Archivos

Procesar muestra la información del archivo separando cada línea que lo compone por el carácter “-”

if (evento.getSource()==procesar) { areatexto.append("\n\n * Análisis *\n");

}

for (int i=0 ; i

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.