Programación interactiva. Oscar Bedoya

Documentos relacionados
Tipos DataInputStream/DataOutputStream: L/E de datos de tipo simple y Cadenas (Strings) ObjectInputStream/ObjectOutputStream: para persistencia de obj

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Entrada y Salida con Java

Tema 4. Excepciones en Java

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

IIC1103 Introducción a la Programación. Ayudantía: Archivos

Programación Orientada a Objetos. Tema 7: Persistencia

Sistema de Archivos en Java

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

Guía - Taller # 2 (JAVA)

Ejercicios de Programación Tema 7. Programación Orientada a Objetos

Tema: Introducción al IDE de Microsoft Visual C#.

Práctica 4: Herencia. Objetivos:

Ficheros y streams. Desde el punto de vista de Java, cada fichero no es más que una secuencia o flujo de bytes [stream].

Manejo de Excepciones Para capturar y manejar las excepciones Java proporciona la sentencia try, catch y finalty. Entre un try y un catch se escribe

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Strings en Java. String es una clase, no un tipo primitivo. Las variables de tipo String, en cualquier instante, pueden contener:

Introduciendo datos desde el

Tema 7.- Fundamentos de la Programación Orientada a Objetos

Introducción al lenguaje Java

5. Sentencias selectivas o condicionales

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

INTRODUCCIÓN...9 CAPÍTULO 1. ELEMENTOS DE UN PROGRAMA INFORMÁTICO...11

Ficheros de acceso aleatorio

Introducción - por qué usarlas?(1)

EJEMPLOS PROGRAMACIÓN SOCKET - JAVA

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Sockets. Los sockets son un mecanismo de comunicación entre procesos que se utiliza en Internet.

Práctica III: Streams, Readers y Writers

VARIABLES LOCALES Y VARIABLES GLOBALES

Flujos (streams) Programación. Licenciatura Lingüística y Nuevas Tecnologias Nadjet Bouayad-Agha

Excepciones y E/S Java y Servicios Web I Master en Ingeniería Matemática

Arreglos Unidimensionales En este tipo de arreglo se hace uso de un índice solamente para hacer referencia a una posición particular del arreglo.

James Gosling, creador de Java

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

EXAMEN PROGRAMACIÓN 21 de Septiembre de 2007 INGENIERÍA INFORMÁTICA Primera parte: Cuestiones 1,5 horas

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

WorkManager E.D. Manual guía de usuario Diseñador de formularios

Elementos léxicos del lenguaje de programación Java

11. Algunas clases estándar de Java (II)

Nota: en el directorio de prácticas y en PoliformaT puedes descargar los ficheros de código fuente de los ejemplos que aparecen en este anexo.

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)

TEMA 1. Introducción a la programación. CONSIDERACIONES GENERALES.

Metodología y Tecnología de la Programación

Objetivo de aprendizaje del tema

FACULTAD DE INGENIERÍA

Clase adicional 2. Estructuras básicas de control. Temas

Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015

PROGRAMACIÓN CLIENTE-SERVIDOR MEDIANTE SOCKETS EN JAVA

1.- FUNDAMENTOS FUNCIONAMIENTO GENÉRICO JAVA SOCKETS Creación de Streams de Entrada...7

Programación Orientada a Objetos. Java: Excepciones

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

FACULTAD DE INGENIERÍA

Arquitecturas cliente/servidor

Información de la lectura en un programa.

Los caracteres de Java pueden agruparse en letras, dígitos, espacios en blanco, caracteres especiales, signos de puntuación y secuencias de escape.

Federico Peinado

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen

CONCEPTOS BASICOS DEL LENGUAJE JAVA

Examen de Prácticas de Programación Ingeniería Informática

Programación en java. Estructuras algorítmicas

Programación Orientada a Objetos. Java: Excepciones

Prácticas de Programación

Guia#12: Tema: Archivos en C#.

- Compilar y ejecutar programas en Java - Estructura básica de una clase - El comando javac - El comando java - Introducción al IDE de desarrollo

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

public static void main(string[ ] args) { Numero f1 = new Numero(3); Numero f2 = new Numero(4); Numero f3 = f1; f1.value = f2.value; Numero f4 = null;

Lección 2: Creando una Aplicación en Java. 1. Estructura del archivo de una clase. 3. Definiendo clases fundamentos

CÁTEDRA DE LENGUAJE DE PROGRAMACIÓN JAVA 2014

Definición de Memoria

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.

Metodología y Tecnología de la Programación

Estructura de las Aplicaciones Orientadas a Objetos El patrón Modelo-Vista-Controlador (MVC)

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

Programación orientada a objetos. Resumen de Temas Unidad 4: Sobrecarga

MANUAL TÉCNICO DEL PROXY UTN

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

GUÍA DE LABORATORIO 5 ARREGLOS DE UNA DIMENSIÓN

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Tema 2. El lenguaje de programación Java (Parte 1)

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

Programa Java. El lenguaje de programación Java. Comentarios. Programa Java. Palabras reservadas. Identificadores

StringBuffer, Math y Wrapper

2. Estructura de un programa en Java

GUIA No 5. CREACIÓN DE SubVI s

Tema 7: Polimorfismo. Índice

Programación Orientada a Objetos con Java. Elementos Básicos del Lenguaje Java. Creación de un objeto. Creación de un objeto. Creación de un objeto

1 SOCKETS EN JAVA. Sistemas Distribuidos::Sockets en Java EUI-SG/INFOR.UVA.ES 1

Universidad Carlos III de Madrid Ingeniería de Telecomunicación. Examen de Programación Febrero Parte de Ejercicios

Programas. Los programas más simples escritos en lenguajes imperativos suelen realizar tres tareas de forma secuencial:

Aprendizaje activo: flujos

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

TECNICAS DE PROGRAMACION Universidad Católica Los Angeles de Chimbote METODOS CONSTRUCTORES Y LA REFERENCIA THIS

Introducción a Java LSUB. 30 de enero de 2013 GSYC

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

Transcripción:

Programación interactiva Oscar Bedoya oscarbed@eisc.univalle.edu.co

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

Método boolean canread() boolean canwrite() boolean exists() boolean isfile() boolean isdirectory() String getabsolutepath() String getname() long length() long lastmodified() String[] List() Descripción Devuelve true si se puede leer el archivo, en caso contrario devuelve false Devuelve true si se puede escribir el archivo, en caso contrario devuelve false Devuelve true si el nombre especificado como argumento en el constructor de File es un archivo o un directorio; en caso contrario devuelve false Devuelve true si el nombre especificado como argumento en el constructor es un archivo Devuelve true si el nombre especificado como argumento en el constructor es un directorio Devuelve un String con la ruta absoluta del archivo o directorio 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

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

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 );

Para especificar un directorio se pasa su nombre al constructor File objeto = new File( directorio );

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

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

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 FileReader(objeto)); while ((texto=entrada.readline())!= null ) areatexto.append("\n" + texto );

PruebaFile

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); if ( objeto.exists() ) { Se utilizan los métodos de la clase File 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 );

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

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

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

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

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

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

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

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()

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

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(); Se crea un objeto de RandomAccessFile para leer del archivo 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();

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

Incorporando JFileChooser para el manejo de archivos Archivos + data.txt

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();

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() ; 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(); Se maneja el caso en que no escriba un nombre de archivo válido 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(); catch(ioexception e){ System.out.println("Error al abrir el archivo"); Cada línea del archivo se guarda temporalmente en un vector

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<datos.size() ; i++) { String linea = (String.valueOf(datos.elementAt(i))); areatexto.append(" - " + linea);

Guardar los cambios efectuados en el área de texto. Se pueden adicionar más palabras para completar el traductor

Una forma de almacenar datos en un archivo es por medio de un flujo (PrintStream) Se declara el flujo PrintStream flujosalida = null; Se muestra el dialogo para guardr el archivo int resultado = selectorarchivo.showsavedialog(this); Se guardar en un objeto File el nombre del archivo File nombrearchivo = selectorarchivo.getselectedfile(); Se crea el flujo de salida flujosalida = new PrintStream(new FileOutputStream(nombreArchivo) );

Una forma de almacenar datos en un archivo es por medio de un flujo (PrintStream) Se declara el flujo PrintStream flujosalida = null; Se muestra el dialogo para guardr el archivo int resultado = selectorarchivo.showsavedialog(this); Se guarda en un objeto File el nombre del archivo File nombrearchivo = selectorarchivo.getselectedfile(); Se crea el flujo de salida flujosalida = new PrintStream(new FileOutputStream(nombreArchivo) );

Una forma de almacenar datos en un archivo es por medio de un flujo (PrintStream) Para escribir en el flujo se utiliza el método println flujosalida.println( areatexto.gettext() ); Cuando se termine de escribir, se debe cerrar el archivo flujosalida.close(); Archivos ver parte del oyente para guardar

Problema: Desarrollar una aplicación Java que permita manejar los datos de los estudiantes. La aplicación debe permitir la búsqueda, adición y consulta de los estudiantes. La información se debe almacenar en un archivo Archivos1 + estudiantes.txt

Considere el siguiente formato para almacenar la información de los estudiantes. Se separa por TAB (tabulación) los datos de cada estudiante

Para la búsqueda, se digita el código y se oprime Buscar. Se busca en el archivo llamado estudiantes.txt -En caso de que se encuentre, se completan los campos de textos con la información respectiva -Si no se encuentra se muestra un mensaje Archivos1 ver método buscarestudiante

Para adicionar los datos de un nuevo estudiante, se utilizará ahora una forma alternativa de escribir en un archivo Se hará completamente utilizando la clase RandomAccesseFile. Específicamente, utilizando un método que permite ubicarse en la última línea del mismo para escribir allí

Crear la referencia al archivo RandomAccessFile file = new RandomAccessFile("estudiantes.txt", "rw"); Ubicarse en el ultimo registro del archivo file.seek(file.length()); Escribir en el archivo file.writebytes(datosestudiante); Cerrar el archivo file.close();

Crear la referencia al archivo RandomAccessFile file = new RandomAccessFile("estudiantes.txt", "rw"); Ubicarse en el ultimo registro del archivo file.seek(file.length()); Escribir en el archivo file.writebytes(datosestudiante); Cerrar el archivo file.close(); seek permite ubicarse en la posición indicada writebytes permite escribir en un archivo RandomAccessFile

Cuando un programa necesita manipular el conjunto de datos almacenado previamente en un archivo, resulta más eficiente hacer una copia del archivo en un Vector Cuando inicia la aplicación se copia la información a un vector, se realizan las modificaciones sobre el vector y cuando el usuario vaya a cerrar la aplicación, se pasa el contenido del vector al archivo Actualizar y Eliminar son operaciones que requieren mayor control sobre el conjunto de datos Archivos2

public class Estudiante { private String codigo, nombre; private int edad; private double promedio; public Estudiante(String c, String n, int e, double p){ codigo = c; nombre = n; edad = e; promedio = p; public String obtenercodigo(){ return codigo; public String obtenernombre(){ return nombre; public int obteneredad(){ return edad; public double obtenerpromedio(){ return promedio; Estudiante String codigo, nombre; int edad; double promedio; Estudiante() public String obtenercodigo() public String obtenernombre() public int obteneredad() public double obtenerpromedio()

datos unestudiante 10066043 Sarah Meyer 25 4.5 unestudiante 6106787 OsCaR 27 4.6 unestudiante 9709555 Sophie 18 4.0

public void cargardatos() { try{ RandomAccessFile file = new RandomAccessFile("estudiantes.txt", "r"); String linea = file.readline(); while(linea!=null){ StringTokenizer tokens = new StringTokenizer(linea, "\t"); Se llama a este método en el constructor while (tokens.hasmoretokens()){ String codigo = String.valueOf(tokens.nextToken()); String nombre = String.valueOf(tokens.nextToken()); int edad = Integer.parseInt(tokens.nextToken()); double promedio = Double.parseDouble(tokens.nextToken()); Estudiante objeto = new Estudiante(codigo, nombre, edad, promedio); datos.addelement(objeto); linea=file.readline(); catch(ioexception e){ System.out.println("Error al abrir el archivo");

Adicionar un estudiante consiste en agregarlo al vector Archivos2 ver oyente adicionar, buscar y eliminar

public static void guardardatos() { try{ flujo= new PrintStream(new FileOutputStream("estudiantes.txt") ); catch (IOException e) { System.out.println("Error al abrir el archivo"); try{ for (int i=0 ; i<datos.size() ; i++) { String linea; linea = ((Estudiante)datos.elementAt(i)).obtenerCodigo() + "\t" + ((Estudiante)datos.elementAt(i)).obtenerNombre() + "\t" + ((Estudiante)datos.elementAt(i)).obtenerEdad() + "\t" + ((Estudiante)datos.elementAt(i)).obtenerPromedio() ; flujo.println(linea); catch(exception e) {System.out.println("Error al abrir el archivo"); flujo.flush(); flujo.close(); Para guardar los datos, se escribe, línea por línea, el contenido del vector

public static void main(string[] args) { Archivos2 aplicacion = new Archivos2(); WindowListener l = new WindowAdapter() { public void windowclosing(windowevent e) { guardardatos(); System.exit(0); ; aplicacion.addwindowlistener(l); aplicacion.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); Se modifica el método windowclosing para que haga el llamado al método guardardatos()