200 likes | 337 Views
INGENIERIA EN SISTEMAS COMPUTACIONALES. ASIGNATURA: PROGRAMACION ORIENTADA A OBJETOS. ALUMNO: JAVIER MARTINEZ MARTINEZ. CONCEPTO DE FLUJO EN JAVA.
E N D
INGENIERIA EN SISTEMAS COMPUTACIONALES ASIGNATURA: PROGRAMACION ORIENTADA A OBJETOS ALUMNO: JAVIER MARTINEZ MARTINEZ
CONCEPTO DE FLUJO EN JAVA • La información que necesita un programa para su función se obtiene mediante una entrada de datos de un fuente que puede ser de tipos muy variados: teclado, archivo, red, etc. • Cuando el programa genera los resultados como salida de la ejecución puede hacerlo de muy diversas maneras: en archivo, pantalla, impresora, etc. Y puede ser de tipo texto, binario, en imágenes, etc.
Esquema para trabajar con los flujos de datos de entrada/ salida.
TIPOS DE FLUJOS • Existen dos tipos de flujos en Java: los que trabajan con bytes y otros que trabajan con caracteres. • Existen clases conversoras que permiten obtener un flujo de bytes a partir de uno de caracteres y viceversa, tanto para la lectura como para escritura.
Existe una clase especial en el paquete java.io de nombre RandomAccesFile para el acceso aleatorio de archivos. • Permite utilizar los archivos en modo lectura y escritura simultáneamente o acceder a datos de forma aleatoria indicando la posición en la que se quiere operar.
LEER Y ESCRIBIR UN ARCHIVO • Un archivo es una secuencia continua de datos, ya sean bytes o caracteres.
FORMA BASICA DE UTILIZAR UN ARCHIVO PARA ENTRADA Y SALIDA DE DATOS.
Para escribir en un archivo, se abre el flujo del archivo con la sentencia: • FileWriter archivo= new FileWriter(“prueba.txt”); • Si el archivo no existe , lo crea. Si el archivo ya existe, elimina su contenido y empezara a escribir como si estuviese vacio. Si no puede abrir el archivo para escribir, genera una excepción.
Para leer el archivo se abre el flujo utilizando la sentencia: • FileReader archivo = new FileReader(“prueba.txt”); • Esta sentencia intenta abrir el archivo. Si existe y se puede abrir la lectura lo abre. Si existe y no lo puede abrir para lectura o si no existe, genera una excepción. • Una vez que se ha terminado de escribir o leer se cierra el flujo con el método close().
FILTROS • Son clases que representan un flujo de datos, ya sean de lectura o de escritura pero cuyo origen o destino de los datos es otro flujo. • Se conectan a otros flujos para proporcionar métodos de lectura o escritura mas apropiados al programador.
ENTRADA DESDE TECLADO • Para lectura de datos del teclado, se dispone de la clase Scanner. • Java proporciona un flujo para la entrada llamado System.in. • Asimismo dispone del flujo System.out para la salida predeterminada. • Ambos son flujos de bytes.
CLASE FILE • La clase File no sirve para leer ni para escribir en un archivo sino permite, entre otras cosas: • Obtener el tamaño del archivo. • Obtener el nombre completo, incluida la ruta. • Cambiar el nombre. • Eliminar el nombre. • Saber si es un directorio o un archivo. • Si es un directorio, obtener la lista de los archivos y directorios que contiene. • Crear un directorio.
ARCHIVOS DE ACCESO ALEATORIO • La clase RandomAccesFile permite abrir un archivo como de lectura, o de lectura y escritura simultáneamente. • Para la lectura del archivo (modo r) dispone de métodos para leer elementos de cualquier tipo primitivo: readInt(), readLong(), readDouble(), readLine().
Cuando se utiliza en el modo de lectura y escritura (modo “rw”) se pueden utilizar los métodos de escritura para escribir los tipos de datos de forma similar a como se pueden leer con los métodos: • writeInt(), writeLong(), writeDouble(), writeBytes(), etc.
Los métodos para el acceso aleatorio son los que permiten acceder a un lugar concreto dentro del archivo y conocer el punto del mismo en el que se va a realizar la operación de lectura y/o escritura: • getFilePosition( ):devuelve la posición actual donde se va a realizar la operación de lectura o escritura. Indica donde se encuentra el cursor del archivo.
seek( ):Sitúa la posición de la próxima operación de lectura o escritura en el byte especificado. • lenght( ):Devuelve el tamaño actual del archivo.
LECTURA Y ESCRITURA DE OBJETOS • Para que una clase sea serializable debe de implementar la interfaz Serializable. • Para escribir objetos de una clase se utiliza el flujo ObjectOutputStream. • En la serializacion de un objeto se escriben en el flujo todos los atributos que no sean static ni transient.
Para escribir un objeto se utiliza el método writeObject(). • Para leer un objeto escrito mediante serializacion se utiliza el flujo ObjectInputStream. Una vez cerrado un objeto de este flujo, se puede llamar al método readObject( ) para leer un objeto del flujo.