Está en la página 1de 21

BSI-05 / PROGRAMACION II

Uso de Archivos
Programacin II

Qu es un Stream?
Un archivo es visto como un flujo continuo de bytes Java cuenta con una clase para manejar flujos de bytes o Streams El sistema de entrada salida de Java es tan extenso que podra ser tema de un curso completo. Existen clases para manejar escritura y lectura de objetos hacia flujos: ObjectOutputStream y ObjectInputStream De esta forma se pueden crear archivos de acceso secuencial mediante los mtodos readObject() y writeObject()
2

Existen flujos predefinidos en Java?


Los siguientes son flujos de uso comn: System.in //InputStream de bytes Para leer de System.in hay que colocar los bytes ledos dentro de un vector de bytes. Para eso se usa read(byte [ ], int capacidad)

System.out //PrintWriter de caracteres


System.err //PrintWriter de caracteres
3

Qu es un archivo?
Un archivo es un flujo que ha sido asociado a una unidad lgica de almacenamiento en un dispositivo de entrada/salida. Un File se refiere normalmente a un archivo ubicado en almacenamiento secundario o almacenamiento persistente.
4

Visualizacin del uso de flujos de entrada y salida


Los flujos pueden enviar y recibir datos desde y hacia archivos ubicados en disco.

salida Flujo entrada


5

Datos.txt

Generalidades de los archivos


Se tiene entonces que los archivos pueden ser aleatorios o secuenciales. Se tiene que cada archivo tiene un nombre fsico (por ejemplo: datos.txt), y un nombre lgico (definido al crear el flujo de datos). Se tiene que se debe definir si se desea escribir o leer del archivo, ya que ambas acciones no pueden efectuarse en forma simultnea.
6

BSI-05 / PROGRAMACION II

Tipos de Archivos
Generalidades de los archivos secuenciales

Cmo funciona el acceso secuencial?


Archivos de acceso secuencial Permiten agregar una serie de objetos en un archivo uno despus del otro. Posteriormente podrn leerse en el mismo orden en que fueron escritos. Archivos de acceso aleatorio Permiten ubicarse en un punto especfico del archivo para lectura o escritura.
8

Cuales son los tipos de acceso en archivos?


El acceso secuencial permite leer todo un archivo desde el inicio hasta el fin o ir agregando informacin al final de un archivo haciendo que el mismo vaya creciendo. Un archivo de acceso secuencial puede ser utilizado para escribir registros en l Adems puede ser utilizado para leer registros escritos en l. Observacin: Un archivo de acceso secuencial no puede estar siendo ledo y modificado a la vez
9

Cmo se definen en Java archivos de acceso secuencial para guardar objetos?

ObjectOutputStream output; output = new ObjectOutputStream ( new FileOutputStream (String nombre)); output.writeObject(Registro registro); output.flush(); //forzar datos a disco

El Registro es cualquier clase que implemente la interfaz serializable


public class Registro implements Serializable{ }
10

Cmo se definen en Java archivos de acceso secuencial para leer objetos?


ObjectInputStream input; input = new ObjetcInputStream ( new FileInputStream (String nombre));

Registro r =(Registro)input.readObject();

11

Ejemplo Completo
Se ver a continuacin en formato comprimido, un ejemplo completo para realizar lectura y EscrituraSecuencial.zip escritura en un archivo secuencial. Siga el cdigo paso a paso con ayuda de su profesor (haga doble clic sobre cada LecturaSecuencial.zip enlace celeste ).
1

BSI-05 / PROGRAMACION II

Tipos de Archivos
Generalidades de los archivos aleatorios

Para qu sirve el acceso aleatorio?


Permiten posicionarse en cualquier seccin del archivo Pueden ser ledos y modificados a la vez Ideales para sistemas de transacciones tipo sistemas de reservaciones, sistemas de ventas y otros.
14

Cmo se lleva a cabo la lectura en archivos con acceso aleatorio?


La declaracin del archivo se hace de la siguiente forma:
RandomAccessFile file; file = new RandomAccessFile (fileName, r); fileName debe ser de tipo File r indica que el archivo ser utilizado como archivo de lectura

Mtodos para lectura de un entero, char, o double:


file.readInt() file.readChar() file.readDouble()

Para ubicarse en un punto especfico se utiliza:


seek(long posicion)

15

Cmo se lleva a cabo la escritura en archivos con acceso aleatorio?


Declaracin del arhivo:
RandomAccessFile file; file = new RandomAccessFile(fileName, rw); fileName debe ser de tipo File rw indica que el archivo ser utilizado como archivo de escritura y lectura

Mtodos para escritura:


file.writeInt(int); file.writeChars(String); file.writeDouble(double);

Ubicacin en un punto especfico:


seek(long posicion)

16

Ejemplo Completo
Se ver a continuacin en formato comprimido, un ejemplo completo para realizar lectura y escritura en un archivo aleatorio. Siga el cdigo paso a paso con ayuda de su profesor (haga doble clic sobre cada enlace).
1

EscribirA rchiv oA leatorio.zip

LeerA rchiv oA leatorio.zip

Para qu sirve la clase File?


La clase File sirve para obtener informacin y manipular archivos en disco. Permite manejar tanto archivos como directorios.

Algunos de los mtodos ms comunes de la clase File son:


18

Cules son algunos mtodos de la clase File?


String getName() Retorna el nombre del archivo String getPath() Retorna la ruta del archivo String getParent() Retorna el nombre del directorio padre long length() Retorna el tamao en bytes del archivo long lastModified() Retorna la fecha en que fue modificado boolean isDirectory() Retorna si el archivo es un directorio o no String[] list() 19 Retorna un vector con el contenido del directorio

Cules son algunos mtodos de la clase File? (continuacin)


boolean canRead() Indica si est habilitado para lectura boolean canWrite() Indica si est habilitado para escritura boolean exists() Indica si el archivo ya existe en disco boolean isFile() Indica si el archivo es de tipo File boolean isAbsolute() Indica si la ruta del archivo es absoluta o no 20 String getAbsolutePath()

Ejemplo Completo
Se ver a continuacin en formato comprimido, un ejemplo completo del uso de la clase File. Siga el cdigo paso a paso con ayuda de su profesor (haga doble clic sobre cada enlace).

C laseF ile.zip
21

También podría gustarte