flujos de entrada y salida en java

12
FLUJOS DE ENTRADA Y SALIDA EN JAVA

Upload: ingenieria-nica

Post on 24-May-2015

4.841 views

Category:

Education


0 download

DESCRIPTION

Flujos de Entrada y Salida en Java!!!Iv Unidad de programación 1, Ingeniería de Sistemas, UNI - RUPAP

TRANSCRIPT

Page 1: Flujos de Entrada y Salida en Java

FLUJOS DE ENTRADA Y SALIDA EN JAVA

Page 2: Flujos de Entrada y Salida en Java

Flujos

•Es el mecanismo utilizado para realizar operaciones de Entrada /Salida•De la misma manera se gestiona la entrada / salida sobre dispositivos como: teclado, pantalla, mouse, impresora, conexión de red•Hay dispositivos que ya tienen su flujo predefinido como la pantalla por ejemplo•Hay dispositivos que no lo tienen, como por ejemplo una impresora•Las diferentes clases de flujos se encuentras agrupadas en java.io

Los flujos son muy

importantes puesto que manejan las

E/S de un programa

ClasesDefinición

Object

InputSteamOutputStea

m

Reader Writer

Random AccesFile

Page 3: Flujos de Entrada y Salida en Java

Clases InputSteam y OutputSteam

•Son clases abstractas que representan el flujo de entrada/salida de bytes.•Definen la funcionalidad básica común de todas las clases de flujo de bytes•Dentro de las subclases de InputSteam tenemos: FileInputStream, ByteArrayInputStream, SequenceInputStream, etc.•Dentro de las subclases de OutputStream están: FileOutputSream, ObjectOutputStream, FileOutputStream, etc.

Investiga las subclases de InputStream

y OutputStea

m

ClasesDefinición

Flujos

Entrada y Salida de

Datos

Gestión de Archivos

Excepciones

Puedes encontrar más información en el libro de java2

en la página 361 Capítulo 14

Page 4: Flujos de Entrada y Salida en Java

Archivos Secuenciales

•Son clases abstractas que representan el flujo de entrada/salida de bytes.•Definen la funcionalidad básica común de todas las clases de flujo de bytes•Dentro de las subclases de InputStream tenemos: FileInputStream, ByteArrayInputStream, SequenceInputStream, etc.•Dentro de las subclases de OutputStream están: FileOutputSream, ObjectOutputStream, FileOutputStream, etc.

Investiga las subclases de InputStream

y OutputStea

m

ClasesDefinición

Flujos

Entrada y Salida de

Datos

Gestión de Archivos

Excepciones

Puedes encontrar más información en el libro de java2

en la página 361 Capítulo 14

Page 5: Flujos de Entrada y Salida en Java

Ficheros de acceso Secuencial

•Es el tipo de acceso más simple a un fichero•Puede almacenar ficheros de cualquier magnitud.•Cuando la información se escribe registro a registro, estos son colocados uno a continuación del otro•Se utiliza con ficheros donde se coloca la información de principio a final y se lee de la misma forma•Los ficheros pueden ser escritos o leidos utilizando FileOutputStream y FileInputStream

Funciones

Los flujos permiten la

salida y entrada de

datos

FileOutputStream

FileInputStream

Page 6: Flujos de Entrada y Salida en Java

FileOutputStream

•Permite escribir bytes en un fichero•Hereda los métodos de la clase OutputStream y trabaja con 3 constructores:1. FileOutputStream(String

nombre);2. FileOutputStream(String

nombre,bool);3. FileOutputStream(File

fichero);• El primero abre un flujo de

salida hacia un fichero especificado

• El segundo hace lo mismo, la única diferencia es que puede continuar agregando información una vez que ya exista el fichero

• El tercero lo hace a partir de un objeto File

Funciones

FileOuputStream nos permite escribir

bytes en un fichero

Ejemplo

import java.io.*;public class Escribir_fichero {public static void main(String[] args) { FileOutputStream fs = null;byte[] buffer = new byte [81];int nbytes;try{System.out.println("Escriba el texto que desea almacenar en el fichero");nbytes = System.in.read(buffer);fs= new FileOutputStream ("text.txt",true);fs.write(buffer , 0 ,nbytes);System.out.println(nbytes);}catch(IOException e){System.out.println("Error");}}}

Page 7: Flujos de Entrada y Salida en Java

FileInputStream

•Permite leer bytes desde un fichero•Proporciona los constructores siguientes: 1. FileInputStream(String

nombre)2. FileInputStream(File fichero)• El primero abre un flujo de

entrada desde el fichero especificado

• El segundo lo hace a partir de un archivo File

Funciones

FileInputStream nos

permite leer bytes de un

fichero

import java.io.*;public class CleerBytes{public static void main (String args []){FileInputStream fe= null;byte [] buffer = new byte [81];int nbytes;try{fe= new FileInputStream("text.txt");nbytes = fe.read(buffer,0,81);String str = new String(buffer,0,nbytes);System.out.println(str);}catch(IOException e){System.out.println("Error" +e.toString());}finally{try{if(fe != null)fe.close();}catch(IOException e){System.out.println("Error" + e.toString());}}}}

Ejemplo

Page 8: Flujos de Entrada y Salida en Java

La clase File

•Permite: 1. Obtener el tamaño del

archivo2. Obtener el nombre completo,

ruta incluida3. Cambiar nombre4. Eliminar nombre5. Saber si es directorio o

archivo6. Si es un directorio obtener la

lista de archivos y directorios que contiene

7. Crear un directorio

Funciones

La clase File no sirve para Leer ni para escribir en un archivo

import java.io.*;public class Listado{ public static void main (String args[]){System.out.println("Indique nombre de subdirectorio");System.out.println("Trayectoria Absoluta, ej: C:\\libro");String nomdir = Leer.Leer_String();File arch = new File(nomdir);if(arch.exists()){if(arch.isDirectory()){System.out.println("Contenido de "+ nomdir);String arr [] = arch.list();for(int j=3; j<arr.length;j++){File otro = new File(nomdir + "\\"+ arr[j]);if (otro.isDirectory()) System.out.println(arr[j]+ "<DIR>");else System.out.println(arr[j]);}}elseSystem.out.println(nomdir + " no es un directorio");}elseSystem.out.println("No existe");}}

Ejemplo

Page 9: Flujos de Entrada y Salida en Java

La clase File

•Se puede utilizar la clase File para referirse al archivo•La clase File permite trabajar con tres tipos de constructores:1. Public File(String ruta

completa)2. Public File(String Ruta, String

nombre)3. Public File (File ruta, String

nombre)4. El primero crea una archivo a

partir de la ruta completa, el segundo a partir de la ruta y el nombre, siempre trabajando con cadenas; y el tercero lo crea a partir de otro y el nombre del fichero

Funciones

La clase File no sirve para Leer ni

para escribir en un archivo .

Sin embargo se puede utilizar

como alternativa en el constructor

Como tarea, puedes buscar los

métodos de la clase File, y leer para que sirve cada uno de

ellos!!!!

•Como lectura recomendada te dejamos los métodos de la clase File•Así mismo también las clases de Flujos de caracteres: Reader, FileWriter, FileReader•También leer sobre Flujos de datos

Lectura recomendada

Page 10: Flujos de Entrada y Salida en Java

Flujo de Datos

•Sirve para escribir en un fichero datos de tipo primitivo (boolean, byte, double, float, long, int, etc…•Para esto se utiliza las clases DataInputStream y DataOutputStream•Un flujo DataInputStream solo puede ser utilizado si el dato se guardó haciendo uso de un flujo DataOutputStream

Funciones

Estas clases son primordiales ya que

su uso es más práctico

Como tarea, puedes buscar los

métodos de la clase

DataInputStream y DataOutputStream

, y realizar ejemplos

DataOutputStreamDeriva directamente de OutputStream

Permite escribir un flujo de salida subordinado, datos de cualquier tipo primitivo

DataInputStreamEs derivada directamente de InputStreamPermite leer un flujo de entrada subordinadoSolo lee datos ingresados por DataOutputStream

Las siguientes líneas de código definen un filtro que permitirá escribir haciendo uso de DataOutputStream:

FileOutputStream fos= new FileOutputStream(datos.dat);DataOutputStream dos= new DataOutputStream (fos);

Las siguientes líneas de código definen un filtro que permitirá leer haciendo uso de DataInputStream:

FileInputStream fis= new FileInputStream(datos.dat);DataInputStream dis= new DataInputStream (fis);

Page 11: Flujos de Entrada y Salida en Java

Ficheros de Acceso Aleatorio

Funciones

•Sirve para escribir en una determinada posición en un fichero•Se hace uso de la clase RandomAccesFile•La clase RandomAccesFile proporciona dos constructores: RandomAccesFile(String nombre, String modo);•RandomAccesFile(File fichero, String modo);•El modo: 1. r: Significa modo lectura2. rw: Significa modo escritura

RAF

getFilePointer()

length()seek(long pl)

Métodos de acceso Aleatorio

Devuelve en bytes la posición del archivo

Devuelve en bytes la longitud del archivo

Coloca en una posición específica relativa al principio del archivo

Page 12: Flujos de Entrada y Salida en Java

Serialización de objetosFunciones

• Es la operación de enviar una serie de objetos a un fichero en disco para hacerlos persistentes recibe el nombre de Seriación•Leer o recuperar el estado su estado del fichero para reconstruirlos en memoria recibe el nombre de deseriación •Se hará uso de ObjectOutputStream y ObjectInputStream•Se trata de convertir el estado de un objeto en una secuencia de bytes, por eso son construidos sobre otros flujos•Los flujos sobre los que se construirá será el FileOutputStream y el FileInputStream

Ejemplo

Para poder hacer uso de una clase

Serializable debes implementar una

interfaz Serializable, que viene por default para identificar

que tipo de clase es

import java.io.*;import java.lang.*;

public class Serial{public static void main(String args[]) throws IOException{String nombre, apellido;long telefono;PrintStream i = System.out;try{File fichero = new File ("Ficherin.txt");FileOutputStream fos = new FileOutputStream(fichero);ObjectOutputStream oos= new ObjectOutputStream(fos);Persona p= new Persona(“Carlos”,”Van de Velde”,27133413);oos.writeObject(p);}catch(IOException io){i.println("Se ha cometido un error" +io);}}}