manejo avanzado de flujos de entrada/salida

17
Manejo avanzado de streams Manejo avanzado de streams de estrada/salida de estrada/salida Ing. Rolando Steep Quezada Martínez Ing. Rolando Steep Quezada Martínez [email protected] [email protected] Programación Avanzada en Java Programación Avanzada en Java

Upload: rolando-steep-quezada-martinez

Post on 24-May-2015

9.259 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Manejo Avanzado de Flujos de Entrada/Salida

Manejo avanzado de streams Manejo avanzado de streams de estrada/salidade estrada/salida

Ing. Rolando Steep Quezada MartínezIng. Rolando Steep Quezada Martínez

[email protected]@upnorte.edu.pe

Programación Avanzada en JavaProgramación Avanzada en Java

Page 2: Manejo Avanzado de Flujos de Entrada/Salida

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 15-15-22

La clase FileLa clase File

• Una instancia de la clase File es representación abstracta de una ruta de acceso para un archivo o un directorio, proporciona información acerca de los archivos, de sus atributos, de los directorios, etc.

• Que exista un objeto de tipo File no implica que exista el archivo (o directorio) correspondiente en el sistema de archivos.

• Constructores

public File(String pathname)

public File(String parent, String child)

public File(File parent, String child)

public File(URI uri)

Page 3: Manejo Avanzado de Flujos de Entrada/Salida

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 15-15-44

Listar los archivos de un directorioListar los archivos de un directorio

Page 4: Manejo Avanzado de Flujos de Entrada/Salida

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 15-15-66

Obtener información de un archivoObtener información de un archivo

Page 5: Manejo Avanzado de Flujos de Entrada/Salida

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 15-15-77

Los streams (flujos)Los streams (flujos)

• Java define la entrada/salida en términos de streams.• Un stream es una secuencia ordenada de datos.• Los streams pueden ser leidos (reads) desde una fuente o escritos

(writes) hacia un destino• Los streams están definidos en el paquete java.io

• Java define dos tipos de streams:– Byte streams : Flujo de datos binarios en formato de 1 byte– Character streams : Flujo de caracteres unicode de 2 bytes

Page 6: Manejo Avanzado de Flujos de Entrada/Salida

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 15-15-99

Clases orientadas a flujo de bytes de Clases orientadas a flujo de bytes de entradaentrada

Clases que representan origen :

•FileInputStream

•ByteArrayInputStream

•PipedInputStream

Clases que añaden características a un origen:

•ObjectInputStream

•SequenceInputStream

•FilterInputStream

•BufferedInputStream

•DataInputStream

•PushbackInputStream

Page 7: Manejo Avanzado de Flujos de Entrada/Salida

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 15-15-1010

Clases orientadas a flujo de bytes de Clases orientadas a flujo de bytes de salidasalida

Clases que representan destino :

•FileOutputStream

•ByteArrayOutputStream

•PipedOutputStream

Clases que añaden características a un destino:

•ObjectOuotputStream

•FilterOutputStream

•BufferedOutputStream

•DataOutputStream

Page 8: Manejo Avanzado de Flujos de Entrada/Salida

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 15-15-1111

Clases orientadas a flujo de caracteres Clases orientadas a flujo de caracteres de entradade entrada

Clases que representan origen :

•CharArrayReader

•FileReader

•PipedReader

•StringReader

Clases que añaden características a un origen:

•BufferedReader

•FilterReader

•InputStreamReader

•LineNumberReader

•PushbackReader

Page 9: Manejo Avanzado de Flujos de Entrada/Salida

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 15-15-1212

Clases orientadas a flujo de caracteres Clases orientadas a flujo de caracteres de salidade salida

Clases que representan destino :

•CharArrayWriter

•FileWriter

•PipedWriter

•StringWriter

Clases que añaden características a un destino:

•BufferedWriter

•PrintWriter

•OutputStreamWriter

•FilterWriter

Page 10: Manejo Avanzado de Flujos de Entrada/Salida

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 15-15-1313

Flujos sobre archivos binariosFlujos sobre archivos binarios

Page 11: Manejo Avanzado de Flujos de Entrada/Salida

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 15-15-1414

Patrón Decorador en el paquete Patrón Decorador en el paquete java.iojava.io

Este patrón permite añadir de modo dinámico nuevas funciones a objetosindividuales (no a clases completas). En vez de usar la herencia tradicional, este patrónencapsula un objeto dentro de un objeto decorador, que se encarga de proporcionar lasnuevas funciones.

Page 12: Manejo Avanzado de Flujos de Entrada/Salida

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 15-15-1515

Flujos filtrados de escrituraFlujos filtrados de escritura

Page 13: Manejo Avanzado de Flujos de Entrada/Salida

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 15-15-1616

Flujos filtrados de lecturaFlujos filtrados de lectura

Page 14: Manejo Avanzado de Flujos de Entrada/Salida

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 15-15-1717

SerializacionSerializacion

• Existen dos streams que permiten serializar y deserializar un objeto.

– Serializar significa transformar un objeto en una secuencia de bytes para escribirlo en un stream.

– Deserializar significa transformar una secuencia de bytes leída de un stream en un objeto.

• Esta posibilidad es muy útil para:

– Persistir objetos (instancias).– Transmitir objetos (instancias).

• Son ObjectInputStream y ObjectOutputStream.

Page 15: Manejo Avanzado de Flujos de Entrada/Salida

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 15-15-1818

Acceso aleatorio a archivosAcceso aleatorio a archivos

• La clase RandomAccessFile permite accesar archivos en forma directa. Esta clase permite ver un archivo como un arreglo de caracteres y leer o escribir zonas del arreglo. Como lo indica la siguiente figura, cada carácter se subindica mediante un índice.

• Mediante los objetos de esta clase utilizamos ficheros binarios mediante un acceso aleatorio, tanto para lectura como para escritura. En estos ficheros hay un índice que nos dice en qué posición del fichero nos encontramos, y con el que se puede trabajar para posicionarse en el fichero.

Page 16: Manejo Avanzado de Flujos de Entrada/Salida

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 15-15-2020

ResumenResumen

• La clase File permite obtener información de un archivo o un directorio.

• Java trata la información como flujos, ya sea de entrada o de salida

• Existen dos jerarquías que definen la base para entrada/salida tanto de caracteres como de bytes

• En la entrada/salida de java se aplica el patrón Decorator al usar Flujos Filtrados.

• La serialización permite el almacenamiento y recuperación de Objetos que implementen la interface Serializable.

• La clase RandomAccessFile permite acceso aleatorio a un archivo, pudiéndose desplazar de manera no secuencial.

Page 17: Manejo Avanzado de Flujos de Entrada/Salida

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 15-15-2121

Práctica 15Práctica 15

Objetivos

– Poder manipular la estructura de archivos del entorno operativo.

– Implementar aplicaciones que hagan uso de recursos externos por medio de mecanismos de entrada/salida.

– Implementar Persistencia de datos mediante la Serialización.