Sunteți pe pagina 1din 14

PROGRAMACION ORIENTADA A OBJETOS.

PROBLEMAS DE DEITEL&DEITEL ARCHIVOS Y FLUJOS


Nombre del profesor: Olga Leyva Nombre del alumno: Conrado Santiago legaspi

DESMOSTRACION DE LA CLASE FILE


public class DemostracionFile { // muestra informacin acerca del archivo especificado por el usuario public void analizarRuta( String ruta ) { // crea un objeto File con base en la entrada del usuario File nombre = new File( ruta ); if ( nombre.exists() ) // si existe el nombre, muestra informacin sobre l { // muestra informacin del archivo (o directorio) System.out.printf( "%s%s\n%s\n%s\n%s\n%s%s\n%s%s\n%s%s\n%s%s\n%s%s", nombre.getName(), " existe", ( nombre.isFile() ? "es un archivo" : "no es un archivo" ), ( nombre.isDirectory() ? "es un directorio" : "no es un directorio" ), ( nombre.isAbsolute() ? "es ruta absoluta" : "no es ruta absoluta" ), "Ultima modificacion: ", nombre.lastModified(), "Tamanio: ", nombre.length(), "Ruta: ", nombre.getPath(), "Ruta absoluta: ", nombre.getAbsolutePath(), "Padre: ", nombre.getParent() ); if ( nombre.isDirectory() ) // muestra el listado del directorio { String directorio[] = nombre.list(); System.out.println( "\n\nContenido del directorio:\n" ); for ( String nombreDirectorio : directorio ) System.out.printf( "%s\n", nombreDirectorio ); } // fin de else } // fin de if exterior else // no es archivo o directorio, muestra mensaje de error { System.out.printf( "%s %s", ruta, "no existe." ); } // fin de else } // fin del mtodo analizarRuta } // fin de la clase DemostracionFile //****************************************************************************** import java.util.Scanner;

public class PruebaDemostracionFile { public static void main( String args[] ) { Scanner entrada = new Scanner( System.in ); DemostracionFile aplicacion = new DemostracionFile(); System.out.print( "Escriba aqui el nombre del archivo o directorio: " ); aplicacion.analizarRuta( entrada.nextLine() ); } // fin de main } // fin de la clase PruebaDemostracionFile

ARCHIVOS DE TEXTO DE ACCESO SECUENCIAL


public class RegistroCuenta { private int cuenta; private String primerNombre; private String apellidoPaterno; private double saldo; // el constructor sin argumentos llama a otro constructor con valores predeterminados public RegistroCuenta() { this( 0, "", "", 0.0 ); // llama al constructor con cuatro argumentos } // fin del constructor de RegistroCuenta sin argumentos // inicializa un registro public RegistroCuenta( int cta, String nombre, String apellido, double sal ) { establecerCuenta( cta ); establecerPrimerNombre( nombre ); establecerApellidoPaterno( apellido ); establecerSaldo( sal ); } // fin del constructor de RegistroCuenta con cuatro argumentos // establece el nmero de cuenta public void establecerCuenta( int cta ) { cuenta = cta; } // fin del mtodo establecerCuenta // obtiene el nmero de cuenta public int obtenerCuenta() { return cuenta; } // fin del mtodo obtenerCuenta

// establece el primer nombre public void establecerPrimerNombre( String nombre ) { primerNombre = nombre; } // fin del mtodo establecerPrimerNombre // obtiene el primer nombre public String obtenerPrimerNombre() { return primerNombre; } // fin del mtodo obtenerPrimerNombre // establece el apellido paterno public void establecerApellidoPaterno( String apellido ) { apellidoPaterno = apellido; } // fin del mtodo establecerApellidoPaterno // obtiene el apellido paterno public String obtenerApellidoPaterno() { return apellidoPaterno; } // fin del mtodo obtenerApellidoPaterno // establece el saldo public void establecerSaldo( double sal ) { saldo = sal; } // fin del mtodo establecerSaldo // obtiene el saldo public double obtenerSaldo() { return saldo; } // fin del mtodo obtenerSaldo } // fin de la clase RegistroCuenta //****************************************************************************** ** import java.io.FileNotFoundException; import java.lang.SecurityException; import java.util.Formatter; import java.util.FormatterClosedException; import java.util.NoSuchElementException; import java.util.Scanner; public class CrearArchivoTexto { private Formatter salida; // objeto usado para enviar texto al archivo

// permite al usuario abrir el archivo public void abrirArchivo() { try { salida = new Formatter( "clientes.txt" ); } // fin de try catch ( SecurityException securityException ) { System.err.println( "No tiene acceso de escritura a este archivo." ); System.exit( 1 ); } // fin de catch catch ( FileNotFoundException filesNotFoundException ) { System.err.println( "Error al crear el archivo." ); System.exit( 1 ); } // fin de catch } // fin del mtodo abrirArchivo // agrega registros al archivo public void agregarRegistros() { // objeto que se va a escribir en el archivo RegistroCuenta registro = new RegistroCuenta(); Scanner entrada = new Scanner( System.in ); System.out.printf( "%s\n%s\n%s\n%s\n\n", "Para terminar la entrada, escriba el indicador de fin de archivo ", "cuando se le pida que escriba los datos de entrada.", "En UNIX/Linux/Mac OS X escriba <ctrl> d y oprima Intro", "En Windows escriba <ctrl> z y oprima Intro" ); System.out.printf( "%s\n%s", "Escriba el numero de cuenta (> 0), primer nombre, apellido paterno y saldo.", "? " ); while ( entrada.hasNext() ) // itera hasta encontrar el indicador de fin de archivo { try // enva valores al archivo { // obtiene los datos que se van a enviar registro.establecerCuenta( entrada.nextInt() ); // lee el nmero de cuenta registro.establecerPrimerNombre( entrada.next() ); // lee el primer nombre registro.establecerApellidoPaterno( entrada.next() ); // lee el apellido

paterno registro.establecerSaldo( entrada.nextDouble() ); // lee el saldo if ( registro.obtenerCuenta() > 0 ) { // escribe el nuevo registro salida.format( "%d %s %s %.2f\n", registro.obtenerCuenta(), registro.obtenerPrimerNombre(), registro.obtenerApellidoPaterno(), registro.obtenerSaldo() ); } // fin de if else { System.out.println( "El numero de cuenta debe ser mayor que 0." ); } // fin de else } // fin de try catch ( FormatterClosedException formatterClosedException ) { System.err.println( "Error al escribir en el archivo." ); return; } // fin de catch catch ( NoSuchElementException elementException ) { System.err.println( "Entrada invalida. Intente de nuevo." ); entrada.nextLine(); // descarta la entrada para que el usuario intente de nuevo } // fin de catch System.out.printf( "%s %s\n%s", "Escriba el numero de cuenta (> 0),", "primer nombre, apellido paterno y saldo.", "? " ); } // fin de while } // fin del mtodo agregarRegistros // cierra el file public void cerrarArchivo() { if ( salida != null ) salida.close(); } // fin del mtodo cerrarArchivo } // fin de la clase CrearArchivoTexto //****************************************************************************** public class PruebaCrearArchivoTexto { public static void main( String args[] ) { CrearArchivoTexto aplicacion = new CrearArchivoTexto(); aplicacion.abrirArchivo(); aplicacion.agregarRegistros();

aplicacion.cerrarArchivo(); } // fin de main } // fin de la clase PruebaCrearArchivoTexto

LEER ARCHIVO DE TEXTO DE ACCESO SECUENCIAL


import import import import import java.io.File; java.io.FileNotFoundException; java.lang.IllegalStateException; java.util.NoSuchElementException; java.util.Scanner;

public class LeerArchivoTexto { private Scanner entrada; // permite al usuario abrir el archivo public void abrirArchivo() { try { entrada = new Scanner( new File( "clientes.txt" ) ); } // fin de try catch ( FileNotFoundException fileNotFoundException ) { System.err.println( "Error al abrir el archivo." ); System.exit( 1 ); } // fin de catch } // fin del mtodo abrirArchivo // lee registro del archivo public void leerRegistros() { // objeto que se va a escribir en la pantalla RegistroCuenta registro = new RegistroCuenta(); System.out.printf( "%-9s%-15s%-18s%10s\n", "Cuenta", "Primer nombre", "Apellido paterno", "Saldo" ); try // lee registros del archivo, usando el objeto Scanner { while ( entrada.hasNext() ) { registro.establecerCuenta( entrada.nextInt() ); // lee el nmero de cuenta registro.establecerPrimerNombre( entrada.next() ); // lee el primer nombre registro.establecerApellidoPaterno( entrada.next() ); // lee el apellido paterno

registro.establecerSaldo( entrada.nextDouble() ); // lee el saldo // muestra el contenido del registro System.out.printf( "%-9d%-15s%-18s%10.2f\n", registro.obtenerCuenta(), registro.obtenerPrimerNombre(), registro.obtenerApellidoPaterno(), registro.obtenerSaldo() ); } // fin de while } // fin de try catch ( NoSuchElementException elementException ) { System.err.println( "El archivo no esta bien formado." ); entrada.close(); System.exit( 1 ); } // fin de catch catch ( IllegalStateException stateException ) { System.err.println( "Error al leer del archivo." ); System.exit( 1 ); } // fin de catch } // fin del mtodo leerRegistros // cierra el archivo y termina la aplicacin public void cerrarArchivo() { if ( entrada != null ) entrada.close(); // cierra el archivo } // fin del mtodo cerrarArchivo } // fin de la clase LeerArchivoTexto //****************************************************************************** * public class PruebaLeerArchivoTexto { public static void main( String args[] ) { LeerArchivoTexto aplicacion = new LeerArchivoTexto(); aplicacion.abrirArchivo(); aplicacion.leerRegistros(); aplicacion.cerrarArchivo(); } // fin de main } // fin de la clase PruebaLeerArchivoTexto

SERIALIZACION DE OBJETOS
import java.io.Serializable; public class RegistroCuentaSerializable implements Serializable {

private private private private

int cuenta; String primerNombre; String apellidoPaterno; double saldo;

// el constructor sin argumentos llama al otro constructor con valores predeterminados public RegistroCuentaSerializable() { this( 0, "", "", 0.0 ); } // fin del constructor de RegistroCuentaSerializable sin argumentos // el constructor con cuatro argumentos inicializa un registro public RegistroCuentaSerializable( int cta, String nombre, String apellido, double sal ) { establecerCuenta( cta ); establecerPrimerNombre( nombre ); establecerApellidoPaterno( apellido ); establecerSaldo( sal ); } // fin del constructor de RegistroCuentaSerializable con cuatro argumentos // establece el nmero de cuenta public void establecerCuenta( int cta ) { cuenta = cta; } // fin del mtodo establecerCuenta // obtiene el nmero de cuenta public int obtenerCuenta() { return cuenta; } // fin del mtodo obtenerCuenta // establece el primer nombre public void establecerPrimerNombre( String nombre ) { primerNombre = nombre; } // fin del mtodo establecerPrimerNombre // obtiene el primer nombre public String obtenerPrimerNombre() { return primerNombre; } // fin del mtodo obtenerPrimerNombre // establece el apellido paterno public void establecerApellidoPaterno( String apellido ) { apellidoPaterno = apellido;

} // fin del mtodo establecerApellidoPaterno // obtiene el apellido paterno public String obtenerApellidoPaterno() { return apellidoPaterno; } // fin del mtodo obtenerApellidoPaterno // establece el saldo public void establecerSaldo( double sal ) { saldo = sal; } // fin del mtodo establecerSaldo // obtiene el saldo public double obtenerSaldo() { return saldo; } // fin del mtodo obtenerSaldo } // fin de la clase RegistroCuentaSerializable //****************************************************************************** * import import import import import java.io.FileOutputStream; java.io.IOException; java.io.ObjectOutputStream; java.util.NoSuchElementException; java.util.Scanner;

public class CrearArchivoSecuencial { private ObjectOutputStream salida; // enva los datos a un archivo // permite al usuario especificar el nombre del archivo public void abrirArchivo() { try // abre el archivo { salida = new ObjectOutputStream( new FileOutputStream( "clientes.ser" ) ); } // fin de try catch ( IOException ioException ) { System.err.println( "Error al abrir el archivo." ); } // fin de catch } // fin del mtodo abrirArchivo // agrega registros al archivo public void agregarRegistros()

{ RegistroCuentaSerializable registro; // objeto que se va a escribir al archivo int numeroCuenta = 0; // nmero de cuenta para el objeto registro String primerNombre; // primer nombre para el objeto registro String apellidoPaterno; // apellido paterno para el objeto registro double saldo; // saldo para el objeto registro Scanner entrada = new Scanner( System.in ); System.out.printf( "%s\n%s\n%s\n%s\n\n", "Para terminar de introducir datos, escriba el indicador de fin de archivo ", "Cuando se le pida que introduzca los datos.", "En UNIX/Linux/Mac OS X escriba <ctrl> d y oprima Intro", "En Windows escriba <ctrl> z y oprima Intro" ); System.out.printf( "%s\n%s", "Escriba el numero de cuenta (> 0), primer nombre, apellido y saldo.", "? " ); while ( entrada.hasNext() ) // itera hasta el indicador de fin de archivo { try // enva los valores al archivo { numeroCuenta = entrada.nextInt(); // lee el nmero de cuenta primerNombre = entrada.next(); // lee el primer nombre apellidoPaterno = entrada.next(); // lee el apellido paterno saldo = entrada.nextDouble(); // lee el saldo if ( numeroCuenta > 0 ) { // crea un registro nuevo registro = new RegistroCuentaSerializable( numeroCuenta, primerNombre, apellidoPaterno, saldo ); salida.writeObject( registro ); // enva el registro como salida } // fin de if else { System.out.println( "El numero de cuenta debe ser mayor de 0." ); } // fin de else } // fin de try catch ( IOException ioException ) { System.err.println( "Error al escribir en el archivo." ); return; } // fin de catch catch ( NoSuchElementException elementException ) { System.err.println( "Entrada invalida. Intente de nuevo." );

entrada.nextLine(); // descarta la entrada para que el usuario intente de nuevo } // fin de catch System.out.printf( "%s %s\n%s", "Escriba el numero de cuenta (>0),", "primer nombre, apellido y saldo.", "? " ); } // fin de while } // fin del mtodo agregarRegistros // cierra el archivo y termina la aplicacin public void cerrarArchivo() { try // cierra el archivo { if ( salida != null ) salida.close(); } // fin de try catch ( IOException ioException ) { System.err.println( "Error al cerrar el archivo." ); System.exit( 1 ); } // fin de catch } // fin del mtodo cerrarArchivo } // fin de la clase CrearArchivoSecuencial //****************************************************************************** * public class PruebaCrearArchivoSecuencial { public static void main( String args[] ) { CrearArchivoSecuencial aplicacion = new CrearArchivoSecuencial(); aplicacion.abrirArchivo(); aplicacion.agregarRegistros(); aplicacion.cerrarArchivo(); } // fin de main

DESERIALIZACION DE UN ARCHIVO DE ACCESO SECUENCIAL


import import import import java.io.EOFException; java.io.FileInputStream; java.io.IOException; java.io.ObjectInputStream;

public class LeerArchivoSecuencial

{ private ObjectInputStream entrada; // permite al usuario seleccionar el archivo a abrir public void abrirArchivo() { try // abre el archivo { entrada = new ObjectInputStream( new FileInputStream( "clientes.ser" ) ); } // fin de try catch ( IOException ioException ) { System.err.println( "Error al abrir el archivo." ); } // fin de catch } // fin del mtodo abrirArchivo // lee el registro del archivo public void leerRegistros() { RegistroCuentaSerializable registro; System.out.printf( "%-10s%-15s%-15s%10s\n", "Cuenta", "Primer nombre", "Apellido paterno", "Saldo" ); try // recibe los valores del archivo { while ( true ) { registro = ( RegistroCuentaSerializable ) entrada.readObject(); // muestra el contenido del registro System.out.printf( "%-10d%-15s%-15s%11.2f\n", registro.obtenerCuenta(), registro.obtenerPrimerNombre(), registro.obtenerApellidoPaterno(), registro.obtenerSaldo() ); } // fin de while } // fin de try catch ( EOFException endOfFileException ) { return; // se lleg al fin del archivo } // fin de catch catch ( ClassNotFoundException classNotFoundException ) { System.err.println( "No se pudo crear el objeto." ); } // fin de catch catch ( IOException ioException ) { System.err.println( "Error al leer del archivo." ); } // fin de catch } // fin del mtodo leerRegistros

// cierra el archivo y termina la aplicacin public void cerrarArchivo() { try // cierra el archivo y sale { if ( entrada != null ) entrada.close(); System.exit( 0 ); } // fin de try catch ( IOException ioException ) { System.err.println( "Error al cerrar el archivo." ); System.exit( 1 ); } // fin de catch } // fin del mtodo cerrarArchivo } // fin de la clase LeerArchivoSecuencial //****************************************************************************** * public class PruebaLeerArchivoSecuencial { public static void main( String args[] ) { LeerArchivoSecuencial aplicacion = new LeerArchivoSecuencial(); aplicacion.abrirArchivo(); aplicacion.leerRegistros(); aplicacion.cerrarArchivo(); } // fin de main } // fin de la clase PruebaLeerArchivoSecuencial

S-ar putea să vă placă și