flujos de entrada y salida en java
DESCRIPTION
Flujos de Entrada y Salida en Java!!!Iv Unidad de programación 1, Ingeniería de Sistemas, UNI - RUPAPTRANSCRIPT
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
…
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
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
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
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");}}}
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
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
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
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);
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
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);}}}