300 likes | 645 Vues
Manejo de Ficheros en JAVA. Creaci ón, Lectura y ESCRITURA de Ficheros en Java. José Luis Redondo García. Grupo Quercus Engineering Software, UEX. Índice. I ntroducción . Paquete java.io .*: 2.1. Byte streams . 2.2. Char streams . Tratamiento convencional de ficheros.
E N D
Manejo de Ficheros en JAVA Creación, Lectura y ESCRITURA de Ficheros en Java. José Luis Redondo García. Grupo Quercus Engineering Software, UEX
Índice • Introducción. • Paquete java.io.*: • 2.1. Byte streams. • 2.2. Charstreams. • Tratamiento convencional de ficheros. • Procesado de tokens. • Acceso directo a ficheros. • 3. E/S estándar. • 4. Serialización. • 5. Ejemplos y Ejercicios.
Introducción • La E/S en Java se gestiona mediante streams. • Por un stream(canal o flujo) fluye la información desde un origen hacia un destino: • Se lee o crea desde el origen. • Se escribe o envía hacia el destino. • Los streamsse manejan de forma independiente del origen y destino concretos. • También existen clases para E/S de ficheros no orientadas a streams. • Se definen en la librería java.io.*;
Introducción Streamde Entrada: Streamde Salida:
Paquete java.io (I) • El paquete java.iose encuentra organizado en las siguientes jerarquías de clases: • Streamsorientados a bytes. • Streamsorientados a chars. • Tratamiento convencional de ficheros. • Procesado de tokens. • Acceso directo a ficheros.
Byte streams (I) • Operan con bytes(8 bits). • La lectura se define en la clase InputStream, mientras que la escritura se define en la clase OutputStream. • Estas clases son abstractas. • Sus herederas definen fuentes y destinos de datos concretas. • Se dividen en dos grupos: • E/S básica • E/S filtrada.
Byte streams (II) • Métodos de lectura (InputStream): • intread(); • intread(byte[] b); • intread(byte[] b, int off, int len); • Métodos de escritura (OutputStream): • voidwrite(intb); • voidwrite(byte[] b); • voidwrite(byte[] b, int off, intlen); • •Apertura con el constructor. • •Cierre con el método: • publicvoidclose() throwsIOException;
Byte streams (III) • Filtros: • Clases para filtrar la información en los streams. • Heredan de FilterInputStream o FilterOutputStream. • Se usan asociándolas con un stream básico. • Ejemplos: • FileInputStreamTest.java, FileOutputStreamTest.java • ByteArrayInputStreamTest.java • DataInputStreamTest.java, PrintStreamTest.java
CharStreams (I) • Operan con chars(16 bits). • La lectura se define en la clase Reader, mientras que la escritura se define en la clase Writer. • Estas clases son abstractas. • Sus herederas definen fuentes y destinos de datos concretas. • Se dividen en dos grupos: • E/S básica • E/S filtrada.
CharStreams (I) • Operan con chars(16 bits). • La lectura se define en la clase Reader, mientras que la escritura se define en la clase Writer. • Estas clases son abstractas. • Sus herederas definen fuentes y destinos de datos concretas. • Se dividen en dos grupos: • E/S básica • E/S filtrada.
CharStreams (II) • Métodos de lectura (Reader): • intread(); • intread(char[] b); • intread(char[] b, int off, intlen); • Métodos de escritura (Writer): • voidwrite(intc); • voidwrite(char[] b); • voidwrite(char[] b, int off, intlen); • Apertura con el constructor. • Cierre con el método: • publicvoidclose() throwsIOException;
CharStreams (III) • Filtros: • Clases para filtrar la información en los streams. • Heredan de FilterReader o FilterWriter. • Se usan asociándolas con un streambásico. • Ejemplos: • FileReaderTest.java, FileWriterTest.java • Cat.java • AppletFile.java, AppletFile.htm
Tratamiento de Ficheros • Clase File: • Permite el acceso convencional a los ficheros. • Incluye métodos para el tratamiento de los atributos. • Clase FileDescriptor: • Clase que representa un handler(manejador) de un descriptor de un fichero del Sistema Operativo. • Representa a un fichero abierto, e incluye su estado. • Su uso es casi automático. • Ejemplos: • Attr.java: Información sobre atributos de ficheros. • Dir.java: Directorio recursivo.
Procesado de Tokens • Clase StreamTokenizer: • Permite el tratamiento de tokens de Java desde un streamde entrada. • Se trata de un filtro. • Clase StringTokenizer: • Similar a la anterior, pero toma los datos de un String. • Ejemplos:
Acceso directo a Ficheros • Clase RandomAccessFile: • Acceso de lectura/escritura a ficheros (NO a streams). • Permite: • Leer y escribir tipos primitivos de Java y arraysde bytes en binario. • Controlar la posición del puntero del fichero. • Ejemplos: