13 Acceso Al Disco - Parte 1

download 13 Acceso Al Disco - Parte 1

of 16

Transcript of 13 Acceso Al Disco - Parte 1

  • 8/7/2019 13 Acceso Al Disco - Parte 1

    1/16

    1

    1

    Acceso al disco Parte 1

    TecnologTecnologa de la Programacia de la Programacin In I

    Ing. Zoraida Vidal Melgarejo,Ing. Zoraida Vidal Melgarejo, MgMg..

    2

    La clase FileLa clase File

    La clase File sirve para encapsular la interaccin de nuestros

    programas con el sistema de archivos. Mediante la clase File no

    nos limitamos a leer el contenido de un archivo, sino que podemos

    obtener informacin adicional, como el tamao del archivo, su

    tipo, su fecha de creacin, los permisos de acceso que tenemossobre l, etc.

    Adems la clase File es la nica forma que tenemos de trabajar

    con directorios (crearlos, ver los archivos que contienen, cambiar

    el nombre o borrar los archivos, etc.).

  • 8/7/2019 13 Acceso Al Disco - Parte 1

    2/16

  • 8/7/2019 13 Acceso Al Disco - Parte 1

    3/16

    3

    5

    MMtodos de la clase Filetodos de la clase File

    boolean exists(): true si existe en el sistema de archivos.

    boolean isDirectory(): true si es un directorio.

    boolean isFile(): true si es un archivo.

    long length(): Longitud en bytes.

    boolean createNewFile() throws IOException: Crea un nuevo

    archivo.

    boolean delete(): Elimina un archivo o un directorio vaco.

    String[] list(): Listar los nombres de los archivos (si es un

    directorio).

    String[] list(FilenameFilter filter): Listar los nombres de los

    archivos dado un filtro de nombres (si es un directorio).

    6

    MMtodos de la clase Filetodos de la clase File

    File[] listFiles(): Listar todas las instancias File (si es directorio).

    File[] listFiles(FilenameFilter filter): Listar instancias File dentro

    de un filtro de nombres (si es un directorio).

    File[] listFiles(FileFilter filter): Listar archivos dado un filtro de

    extensiones.

    boolean mkdir(): Crear un directorio.

    boolean mkdirs(): Crear un conjunto de directorios.

    boolean renameTo(File dest): Permite renombrar un archivo.

    boolean setLastModified(long time): Establece la fecha de

    modificacin del archivo.

    boolean setReadOnly(): Marca un archivo como slo lectura.

  • 8/7/2019 13 Acceso Al Disco - Parte 1

    4/16

    4

    7

    Listar los archivos de un directorioListar los archivos de un directorio

    Con el mtodo isDirectory podemos comprobar si la ruta

    especificada corresponde a un directorio, si fuera el caso, el

    mtodo list, nos permite listar los nombres de los archivos que

    contenga.

    Si se desea limitar el nmero de archivos devueltos por el mtodo

    list para que se incluyan nicamente aquellos archivos que

    cumplan cierta condicin de nombre de archivo, se debe

    implementar la interfaz FilenameFilter, la cual tiene un nico

    mtodo accept, al que se llama una vez por cada archivo de una

    lista y que devuelve true si se debiera incluir el archivo en la lista.

    8

    Archivos de acceso secuencialArchivos de acceso secuencial

    El tipo de acceso ms simple a un archivo de datos es el

    secuencial.

    Un archivo abierto para acceso secuencial es un archivo que puede

    almacenar registros de cualquier longitud, incluso de un solo byte.

    Cuando la informacin se escribe registro a registro, stos son

    colocados uno a continuacin de otro, y cuando se lee, se empieza

    por el primer registro y se contina al siguiente hasta alcanzar el

    final.

    Este tipo de acceso generalmente se utiliza con archivos de

    texto en los que se escribe toda la informacin desde el

    principio hasta el final y se lee de la misma forma.

  • 8/7/2019 13 Acceso Al Disco - Parte 1

    5/16

    5

    9

    LosLos streamsstreams (flujos)(flujos)

    Java define la entrada/salida en trminos de streams. Es decir,

    cualquier programa realizado en Java que necesite llevar a cabo

    una operacin de I/O lo har a travs de un stream.

    Un stream es una secuencia ordenada de datos.

    Los streams pueden ser ledos (read) desde una fuente o escritos

    (write) hacia un destino.

    Estn definidos en el paquetejava.io

    10

    LosLos streamsstreams (flujos)(flujos)

    Origen Programastream read

    Programa Origenstreamwrite

  • 8/7/2019 13 Acceso Al Disco - Parte 1

    6/16

    6

    11

    LosLos streamsstreams (flujos)(flujos)

    Java define dos tipos de streams:

    Byte streams: Flujo de datos binarios en formato de 1 byte.

    Character streams: Flujo de caracteres Unicode de 2 bytes.

    Un stream, cuya traduccin literal es flujo, es una abstraccin de

    todo aquello que produzca o consuma informacin.

    12

    ByteByte streamsstreams (Flujos de bytes)(Flujos de bytes)

    Su uso est orientado a la lectura y escritura de datos binarios.

    El tratamiento del flujo de bytes viene gobernado por dos clases

    abstractas: InputStream y OutputStream.

    Cada una de estas clases abstractas tienen varias subclasesconcretas que controlan las diferencias entre distintos dispositivos

    de I/O que se pueden utilizar.

    As mismo, estas dos clases son las que definen los mtodos que

    sus subclases tendrn implementados y, de entre todas, destacan

    los mtodos read() y write() que leen y escriben bytes de datos

    respectivamente.

  • 8/7/2019 13 Acceso Al Disco - Parte 1

    7/16

    7

    13

    ByteByte streamstream:: InputStreamInputStream

    14

    ByteByte streamstream:: OutputStreamOutputStream

  • 8/7/2019 13 Acceso Al Disco - Parte 1

    8/16

    8

    15

    ByteByte streamstream:: FileOutputStreamFileOutputStream

    Permite escribir bytes a un archivo.

    Adems de los mtodos que hereda de la clase OutputStream, la

    clase proporciona los siguientes constructores:

    FileOutputStream (String nombre)

    FileOutputStream (String nombre, boolean aadir)

    FileOutputStream (File archivo)

    El primer constructor abre un flujo de salida hacia el archivo

    especificado por nombre, el segundo hace lo mismo pero con la

    posibilidad de aadir datos a un fichero existente (aadir= true),

    y el tercero lo hace a partir de un objeto File.

    16

    ByteByte streamstream:: FileInputStreamFileInputStream

    Permite leer bytes desde un archivo.

    Adems de los mtodos que hereda de la clase InputStream, la

    clase proporciona los siguientes constructores:

    FileInputStream (String nombre) FileInputStream (File archivo)

    El primer constructor abre un flujo de entrada desde el archivo

    especificado por nombre, y el segundo lo hace a partir de un

    objeto File.

  • 8/7/2019 13 Acceso Al Disco - Parte 1

    9/16

    9

    17

    CharacterCharacter streamsstreams (Flujos de caracteres)(Flujos de caracteres)

    Proporciona un medio conveniente para el manejo de entradas y

    salidas de caracteres.

    Al utilizar la codificacin Unicode, se puede internacionalizar.

    El tratamiento del flujo de caracteres viene gobernado por dos

    clases abstractas: Reader y Writer.

    Cada una de estas clases abstractas tienen varias subclases

    concretas que implementan los mtodos definidos en ellas siendo

    los ms destacados los mtodos read() y write() que leen yescriben caracteres de datos respectivamente.

    18

    CharacterCharacter streamstream:: ReaderReader

  • 8/7/2019 13 Acceso Al Disco - Parte 1

    10/16

    10

    19

    CharacterCharacter streamstream::WriterWriter

    20

    CharacterCharacter streamstream:: FileWriterFileWriter

    Permite escribir caracteres (char) a un archivo.

    Adems de los mtodos que hereda de la clase Writer, la clase

    proporciona los siguientes constructores:

    FileWriter (String nombre) FileWriter (String nombre, boolean aadir)

    FileWriter (File archivo)

    El primer constructor abre un flujo de salida hacia el archivo

    especificado por nombre, el segundo hace lo mismo con la

    posibilidad de aadir datos y el tercero lo hace a partir de un

    objeto File.

  • 8/7/2019 13 Acceso Al Disco - Parte 1

    11/16

    11

    21

    CharacterCharacter streamstream:: FileReaderFileReader

    Permite leer caracteres desde un archivo.

    Adems de los mtodos que hereda de la clase Reader, la clase

    proporciona los siguientes constructores:

    FileReader (String nombre)

    FileReader (File archivo)

    El primer constructor abre un flujo de entrada desde el archivo

    especificado por nombre, y el segundo lo hace a partir de un

    objeto File.

    22

    DataData streamsstreams (Flujos de datos)(Flujos de datos)

    Permiten leer y escribir datos de tipos primitivos desde y hacia un

    archivo.

    El paquete java.io proporciona las clases DataInputStream y

    DataOutputStream, que permiten leer y escribir,

    respectivamente, datos de cualquier tipo primitivo.

    Sin embargo, no pueden utilizarse con los dispositivos ASCII de

    E/S estndar: un flujo DataInputStream slo puede leer datos

    almacenados en un archivo mediante un flujo

    DataOutputStream.

  • 8/7/2019 13 Acceso Al Disco - Parte 1

    12/16

    12

    23

    DataData streamstream:: InputStreamInputStream

    24

    DataData streamstream:: OutputStreamOutputStream

  • 8/7/2019 13 Acceso Al Disco - Parte 1

    13/16

    13

    25

    DataData streamstream:: DataOutputStreamDataOutputStream

    Deriva indirectamente de OutputStream y permite escribir en un

    flujo de salida subordinado, datos de cualquier tipo primitivo.

    Todos los mtodos proporcionados por esta clase estn definidos

    en la interfaz DataOutput implementada por la misma.

    Las siguientes lneas de cdigo definen un filtro que permitir

    escribir datos de tipos primitivos en un archivo datos.txt.

    FileOutputStream flujo = new FileOutputStream(datos.txt);

    DataOutputStream filtro = new DataOutputStream(flujo);

    26

    DataData streamstream:: DataOutputStreamDataOutputStream

    Los mtodos ms utilizados de esta clase son:

    writeBoolean(): Escribe un valor de tipo boolean.

    writeByte(): Escribe un valor de tipo byte.

    writeBytes(): Escribe un String como una secuencia de bytes. writeChar(): Escribe un valor de tipo char.

    writeChars(): Escribe un String como una secuencia de

    caracteres.

    writeShort(): Escribe un valor de tipo short.

  • 8/7/2019 13 Acceso Al Disco - Parte 1

    14/16

    14

    27

    DataData streamstream:: DataOutputStreamDataOutputStream

    writeInt(): Escribe un valor de tipo int.

    writeLong(): Escribe un valor de tipo long.

    writeFloat(): Escribe un valor de tipo float.

    writeDouble(): Escribe una valor de tipo double.

    writeUTF(): Escribe una cadena de caracteres en formato

    UTF-8; los dos primeros bytes especifican el nmero de bytes

    de datos que sern escritos.

    28

    DataData streamstream:: DataInputStreamDataInputStream

    Deriva indirectamente de InputStream y permite leer de un flujo

    de entrada subordinado, datos de cualquier tipo primitivo escritos

    por un flujo de la clase DataOutputStream.

    Todos los mtodos proporcionados por esta clase estn definidos

    en la interfaz DataInput implementada por la misma.

    Las siguientes lneas de cdigo definen un filtro que permitir leer

    datos de tipos primitivos desde el archivo datos.txt.

    FileInputStream flujo = new FileInputStream(datos.txt);

    DataInputStream filtro = new DataInputStream(flujo);

  • 8/7/2019 13 Acceso Al Disco - Parte 1

    15/16

    15

    29

    DataData streamstream:: DataInputStreamDataInputStream

    Los mtodos ms utilizados de esta clase son:

    readBoolean(): Devuelve un valor de tipo boolean.

    readByte(): Devuelve un valor de tipo byte.

    readChar(): Devuelve un valor de tipo char.

    readShort(): Devuelve un valor de tipo short.

    30

    DataData streamstream:: DataInputStreamDataInputStream

    readInt(): Devuelve un valor de tipo int.

    readLong(): Devuelve un valor de tipo long.

    readFloat(): Devuelve un valor de tipo float.

    readDouble(): Devuelve una valor de tipo double.

    readUTF(): Devuelve una cadena de caracteres en formato

    UTF-8; los dos primeros bytes especifican el nmero de bytes

    de datos que sern ledos.

  • 8/7/2019 13 Acceso Al Disco - Parte 1

    16/16

    31

    DataData streamsstreams

    ArchivowritePrograma filtro flujo

    ArchivoPrograma filtro flujo read

    DataOutputStreamDataOutputStream

    DataInputStreamDataInputStream