1 Streams en Java Agustín J. González ELO-329. 2 Generalidades Un Stream es simplemente una fuente o destino de bytes. Los streams más comunes son los.

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 13 Ing. Ronald Criollo.
Advertisements

Curso de java básico (scjp)
Java nos ofrece System.out para escribir en pantalla, pero también tenemos System.in para leer. System.in es un objeto de una clase de java que se llama.
Archivos de Texto. Introducción Los archivos son una secuencia de bits que se guarda en el disco duro. La ventaja de utilizar archivos es que los datos.
Archivos Binarios Usando Serializable. Introducción Utilizar archivos binarios nos ayuda a guardar y leer más fácilmente los datos de archivos. Pero como.
Archivos Binarios. Introducción En clase ya vimos el uso de archivos de texto en Java, pero el uso de archivos es mucho más poderoso que eso, al utilizar.
DESARROLLO DE SOLUCIONES EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN APLICACIONES MOVILES CON J2ME RMS Ing. Ronald Criollo.
EXCEPCIONES UNIDAD 5.
FICHEROS.
Python CI-2200 Programación Avanzada en Sistemas UNIX.
Streams de datos y archivos
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Sockets y Threads en JAVA
Unidad 1. Manejo de ficheros
Programación, Algoritmos y Estructuras de Datos
Archivos Implementar un método que lea una secuencia de números enteros de un archivo y compute la cantidad de elementos leídos.
PROGRAMACIÓN ORIENTADA A OBJETOS
Archivos Contenido: Archivos de Texto Archivos de Acceso Aleatorio
La estructura básica de los programas en java, algo a tener en cuenta y que debemos recordar siempre es el archivo debe llevar el nombre de la clase con.
Excepciones y archivos Info 033. Exception El término Exception es la palabra corta para la frase "evento excepcional." Definition: Una excepción es un.
Método en Java.
Manejo de excepciones en Java
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Curso Programación en Java
Estructuración y modularidad de los programas Fundamentos de Programación/ Programación I
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Creación de Aplicaciones
Tema 6: Clases Antonio J. Sierra.
En Java las estructuras de repetición son las mismas que en C/C++.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Public class MiClase { public static int tmp = 123; // miembro variable public static final double PI = ;// miembro constante public float.
©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter N - 1 Capitulo 12 Archivos de Ingreso y Salida.
Archivos y Búsqueda Secuencial
Sockets en Java. Sockets ● Para programar aplicaciones en red en Java se utilizan los Sockets. ● Un socket permite establecer y manejar una conexión entre.
SCJP Sun Certified Programmer for Java 6
Manejo de Excepciones Agustín J. González ELO329.
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Suponiendo que además en la clase U hay: import java.util.*; class U{ static Scanner teclado = new Scanner(System.in); static public int readInt(String.
1 Programación Interactiva Archivos Escuela de Ingeniería de Sistemas y Computación Facultad de Ingeniería Universidad del Valle.
7. Interfaces Herencia múltiple Interfaces Comparable y Comparator
Archivos.
Framework Class Library (FCL) Dr. Diego Lz. de Ipiña Gz. de Artaza
1 Persistencia en Java Agustín J. González ELO-329.
ESTRUCTURA DE DATOS EN JAVA
Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre.
Programación I :: Prof. Yeniffer Peña Programación I Interface Gráfica de Usuario Presentación.
Programación Orientada a Objetos
Entrada / Salida. Java adopta de Unix el concepto de stream Un stream es un flujo de datos (secuencia de bytes) que va de una fuente a un destino. Desde.
Streams. / En casi todo programa se necesita traer o enviar información a una fuente externa. / Dicha información puede estar en un archivo en el disco.
El lenguaje de programación Java
1 Unidad IV Archivos en Java y C++ M.C. Juan Carlos Olivares Rojas.
Unidad 2 REUTILIZACIÓN DE CLASES Programación Orientada a Objetos M.S.C. Ivette Hernández Dávila.
1 Manejo de Excepciones y otros Agustín J. González ELO-329.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros que no tienen.
ELO3291 Entrada y Salida Básica en Java ELO-329: Diseño y programación orientados a objetos Agustín J. González.
1 Streams y Persistencia en Java Agustín J. González ELO-329.
TRANSFER FILE BY IP Claudia Codriansky Miguel Olave
Agustín J. González ELO-329
Manejo de Ficheros en JAVA
INGENIERIA EN SISTEMAS COMPUTACIONALES ASIGNATURA: PROGRAMACION ORIENTADA A OBJETOS ALUMNO: JAVIER MARTINEZ MARTINEZ.
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2009.
Instituto Tecnológico Superior de Libres Ingeniería en Sistemas Computacionales Segundo semestre Materia: Programación Orientada a Objetos Asesora: Ing.
Visual Basic Prof.: Carol Briones García. Uso de Archivos  Definición  Es un conjunto de información que se almacena en algún medio de escritura que.
Estrategias de Persistencia. Program start Program execution Time Program start Program end Object creation Object edition Program end Object Lifetime.
 DIANA GARCIA VALERIO. CONCEPTO DE FLUJO DE JAVA:  La información que necesita un programa para su función se obtiene mediante una entrada de datos.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Programación I :: Prof. Yeniffer Peña Programación I Interface Gráfica de Usuario Presentación.
1 Introducción a las Comunicaciones en Red. import java.net.InetAddress; import java.net.UnknownHostException; public class PruebaSockets { public static.
Streams y Persistencia en Java
Transcripción de la presentación:

1 Streams en Java Agustín J. González ELO-329

2 Generalidades Un Stream es simplemente una fuente o destino de bytes. Los streams más comunes son los archivos. También pueden ser caracteres de un string o bloque de memoria o bytes de un “socket”. La idea es que el programador los trate de la misma forma que archivos. En Java se usan diferentes mecanismos para dar formato a datos. Ofrece clases orientada a manejo de bajo nivel y otras de alto nivel. Da gran flexibilidad y hace uso de “filtros en cascada” para manipular los datos de entrada o salida. En general la flexibilidad en ocasiones resulta más “aparatosa” que lo que desearíamos.

3 Jerarquía para flujos de caracteres Clase para lectura de Caracteres Clase para escritura de caracteres Clase abstracta PrintWriter

4 Jerarquía para flujos de bytes Lectura de bytes Escritura de bytes Clase abstracta

5 Clases bases para Salida La clase OutputStream es una clase abstracta que especifica un número de operaciones para escribir un byte, para escribir un arreglo de bytes, y para cerrar el stream. Clases derivadas de ésta son FileOutputStream y ByteArrayOutputStream, las cuales son clases concretas (no abstractas). Sus operaciones de write envían bytes a archivo o memoria. Para dar formato a los datos (imprimir números y strings) se dispone de las clases “Writers”. PrintWriter es una clase de esa jerarquía, la cual recibe en su constructor el objeto con el cual podrá escribir (write) los bytes. Ej. FileOutputStream fout = new FileOutputStream(“output.dat”); PrintWriter pout = new PrintWiter(fout);

6 Ejemplo: Copia de un archivo import java.io.*; public class Copy { public static void main(String[] args) throws IOException { File inputFile = new File("farrago.txt"); File outputFile = new File("outagain.txt"); FileReader in = new FileReader(inputFile); FileWriter out = new FileWriter(outputFile); int c; while ((c = in.read()) != -1) out.write(c); in.close(); out.close(); } }

7 Además de formato podemos disponer de un buffer para mejorar el desempeño de algunos dispositivos de entrada y salida. El incorporar un buffer y con ello crear la cadena es un caso de filtrado, se usa: PrintWriter pout = new PrintWriter( new BufferedOutputStream (new FileOutpurStream(“Output.dat”))); Los filtros se pueden construir usando cualquier combinación de clases encadenando una después de la otra. La primera clase es aquella que permite leer o escribir objetos, y la última clase de la cadena envía o recibe los bytes. Las clases intermedias pueden hacer el trabajo que necesitemos (buffer, encriptación etc.) PrintWriterBufferedOutputStreamFileOutputStream Clases bases para Salida (Buffer)

8 Clases bases para Salida Para escribir texto, podemos usar PrintWriter y sus operaciones print o println. PrintWriter out; Employee harry;.... // apertura del PrintWriter entre otras out.println(3.14); out.print(“Harry : “); out.print(harry); Cuando se imprimen objetos, se invoca el método toString del objeto. La clase Object implementa este método, el cual imprime la clase del objeto y su dirección. Lo recomendable es re-definir este método para producir un string que tenga más sentido para la clase específica.

9 Clases bases para Entrada y Salida de bytes (no necesariamente legible por humanos ) Para salida binaria, usamos las clases DataInputStream y DataOutputStream. Ellas proveen las siguientes operaciones: DataInputStreamDataOutputStream readIntwriteInt readShortwriteShort readLongwriteLong readFloatwriteFloat readDoublewriteDouble readBooleanwriteBoolean readCharwriteChar writeChars Ejemplo: DataOutputStream out = new DataOutputStream(new FileOutputStream(“output.dat”)); out.writeDouble(3.14); out.writeChars(“Harry”);

10 Clases bases para Entrada y Salida de bytes (no necesariamente legible por humanos) Una propiedad importante de las operaciones previas es que son independiente del procesador (tamaño de datos). Se usa el ordenamiento de la red big-endian. La comunicación es segura pues la clase se encarga de hacer las conversiones si el procesador es little-endian. Ej. Para guardar un string, primero se puede guardar el tamaño y luego los caracteres. String s;.... out.writeInt(s.length()); out.writeChars(s); Para leer el string de vuelta: int len = in.readInt(); StringBuffer b = new StringBuffer(len); for (int i=0; i <len; i++) b.append(in.readChar()); String s = b.toString();

11 Ejemplos Lectura de una página WEB URL url = new URL(“ InputStream is = url.openStream(); DataInputStream in = new DataInputStream(is); String s; while((s=in.readLine()) != null) {..... // procesar s... } Lectura desde archivo comprimido ZipInputStream zin =new ZipInputStream(new FileInputStream(“employee.zip”)); DataInputStream din=DataInputStream(zin);

12 Archivos Se dispone de las clase FileInputStream y FileOutputStream. Hay que recordar cerrar el archivo. FileInputStream fin = new FileInputStream (“input.dat”);... fin.close(); No hay operaciones muy útiles para trabajar con los archivos en forma directa. Debemos utilizar un adaptador. DataInputStream in = new DataInputStream(fin); Si deseamos hacer ambos lectura y salida de un archivo, se debe usar la clase RandomAccessFile. Esta clase no hereda de InputStream ni OutputStream. Como no hay múltiple herencia en Java, esta clase implementa las interfaces DataInput y DataOutput. Para abrir un archivo random: RandomAccessFile in = new RandomAccessFile(“input.dat”, “r”); RandomAccessFile inOut = new RandomAccessFile(“input.dat”, “rw”); Los archivos random disponen de funciones para hacer un seek como en C.

13 String como un Stream Se emplean las clases ByteArrayOutputStream y ByteArrayInputStream. Para escribir sobre un string usando print(). Date bday = new Date(1975, 6,16); ByteArrayOutputStream bout = new ByteArrayOutputStream(); PrintWriter out = new PrintWriter(bout); out.print(“Birthday: “); out.println(bday); String b = out.toString();

14 Lectura de Entradas de Texto Para escribir o leer dados binarios usamos DataInputStream o DataOutputStream. Para escritura formateada, usamos PrintWriter. Para lectura de texto en alto nivel no tenemos ninguna clase. Debemos hacerlo “a mano”. Por ejemplo: Para lectura de líneas podemos usar el método readLine de la clase BufferedReader. BufferedReader in = new BufferedReader(new FileReader(“employee.txt”); String line; while ((line = in.readLine())!=null) { hacemos algo }

15 Lectura de Entradas de Texto (cont) Para leer números, debemos cargar un string y luego convertirlo. Es posible que debamos extraer el dato desde el string para ello utilizamos la clase utilitaria StringTokenizer. Caso simple: String s=in.readLine(); double x=Double.parseDouble(s); Caso más completo aquí.aquí

16 Lectura y escritura de objetos Ver ejemplo aquí.aquí Otro ejemplo de entrada y salida variada Otro ejemplo