13 Acceso Al Disco - Parte 1
-
Upload
jean-paul-perea -
Category
Documents
-
view
216 -
download
0
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