Download - Manejo Avanzado de Flujos de Entrada/Salida
![Page 1: Manejo Avanzado de Flujos de Entrada/Salida](https://reader036.vdocuments.co/reader036/viewer/2022081422/5560e874d8b42aa65e8b525f/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022081422/5560e874d8b42aa65e8b525f/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022081422/5560e874d8b42aa65e8b525f/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022081422/5560e874d8b42aa65e8b525f/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022081422/5560e874d8b42aa65e8b525f/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022081422/5560e874d8b42aa65e8b525f/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022081422/5560e874d8b42aa65e8b525f/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022081422/5560e874d8b42aa65e8b525f/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022081422/5560e874d8b42aa65e8b525f/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022081422/5560e874d8b42aa65e8b525f/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022081422/5560e874d8b42aa65e8b525f/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022081422/5560e874d8b42aa65e8b525f/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022081422/5560e874d8b42aa65e8b525f/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022081422/5560e874d8b42aa65e8b525f/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022081422/5560e874d8b42aa65e8b525f/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022081422/5560e874d8b42aa65e8b525f/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022081422/5560e874d8b42aa65e8b525f/html5/thumbnails/17.jpg)
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.