Documentos de Académico
Documentos de Profesional
Documentos de Cultura
S01-Archivos de Acceso Secuencial
S01-Archivos de Acceso Secuencial
PROGRAMACIÓN
ORIENTADA A OBJETOS II
Ms. Zoraida Yanet VIDAL MELGAREJO
zvidal@unitru.edu.pe
Sesión 01
ARCHIVOS EN JAVA:
CLASE FILE Y
ARCHIVOS DE
ACCESO
SECUENCIAL
2
Experiencia Curricular: POO II Tema: Archivos de acceso secuencial
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 1 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Programa de Estudios: Ingeniería de Sistemas
Definición de archivo
• Estos datos se almacenan como una colección de registros, conteniendo todos ellos,
generalmente, los mismos campos.
-3-
Definición de archivo
Para manipular un archivo son tres las operaciones que se realizan: abrir el archivo,
escribir o leer registros del archivo y cerrar el archivo. Por ejemplo, si se quisiera
almacenar en un archivo los datos relativos a una persona, podría diseñarse cada
registro con los datos: nombre, apellidos y fecha de nacimiento.
campo
registro registro
archivo
-4-
4
Experiencia Curricular: POO II Tema: Archivos de acceso secuencial
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 2 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Programa de Estudios: Ingeniería de Sistemas
Definición de archivo
-5-
La clase File
La clase File sirve Un objeto de la clase File Sus métodos permitirán interrogar
para encapsular la representa el nombre de un al sistema sobre todas las
interacción de los archivo o de una carpeta (o características de ese archivo o
programas con el directorio) que puede existir carpeta, tal como el tamaño del
sistema de archivos. en el sistema de archivos de la archivo, su tipo, su fecha de
computadora. creación, los permisos de acceso
que tenemos sobre él, etc.
-6-
6
Experiencia Curricular: POO II Tema: Archivos de acceso secuencial
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 3 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Programa de Estudios: Ingeniería de Sistemas
La clase File
• Que exista un objeto de tipo File no implica que exista el archivo (o directorio)
correspondiente en el sistema de archivos.
-7-
Permiten instanciar objetos de tipo Crea un objeto File a partir del nombre
File. del archivo, más su ruta de acceso
(relativa o absoluta).
public File (String ruta, String nombre) public File (File ruta, String nombre)
Crea un objeto File a partir de una ruta Crea un objeto File a partir de otro que
(relativa o absoluta) y un nombre de represente una ruta (relativa o absoluta)
archivo separado. y un nombre de archivo separado.
-8-
8
Experiencia Curricular: POO II Tema: Archivos de acceso secuencial
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 4 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Programa de Estudios: Ingeniería de Sistemas
La clase File
Premio
• El constructor utilizado depende a menudo de otros Nobel
objetos de Literatura
File necesarios para el
acceso.
• Una vez creado un objeto File, ya se puede reunir información sobre al archivo a través
de los métodos que la clase File proporciona.
-9-
- 10 -
10
Experiencia Curricular: POO II Tema: Archivos de acceso secuencial
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 5 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Programa de Estudios: Ingeniería de Sistemas
- 11 -
11
- 12 -
12
Experiencia Curricular: POO II Tema: Archivos de acceso secuencial
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 6 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Programa de Estudios: Ingeniería de Sistemas
01
Java define la
entrada/salida en
términos de streams
o flujos de
02
La comunicación
información. Es
decir, cualquier
programa realizado
entre un programa y
el origen o destino de 03
cierta información, se De esta forma, el
04
en Java que
realiza mediante un programa leerá o
necesite llevar a
stream que no es más escribirá en el
cabo una
que un objeto que stream sin
operación de E/S lo Un stream es una
importarle desde
hará a través de un hace de secuencia
dónde viene la
stream. intermediario entre el ordenada de datos.
información o
programa y el origen adónde va.
o destino de la
información.
- 13 -
13
Este nivel de abstracción hace que un programa no tenga que saber nada del
dispositivo, lo que se traduce en una facilidad más a la hora de escribir programas, ya
que los algoritmos para leer y escribir datos serán siempre más o menos los mismos:
Leer: Escribir:
Abrir un flujo desde un archivo. Abrir un flujo hacia un archivo.
Mientras haya información: Mientras haya información:
Leer datos. Escribir datos.
Cerrar el flujo. Cerrar el flujo.
- 14 -
14
Experiencia Curricular: POO II Tema: Archivos de acceso secuencial
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 7 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Programa de Estudios: Ingeniería de Sistemas
Object
InputStream Reader
SubClases SubClases
OutputStream Writer
SubClases SubClases
- 15 -
15
- 16 -
16
Experiencia Curricular: POO II Tema: Archivos de acceso secuencial
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 8 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Programa de Estudios: Ingeniería de Sistemas
Sin embargo, los archivos de texto no son los más apropiados para
almacenar grandes series de números, porque cada número es
almacenado como una secuencia de bytes.
Esto significa que un número entero de nueve dígitos ocupa nueve bytes en
lugar de los cuatro requeridos para un entero.
- 17 -
17
Flujo de Caracteres 2
18
Experiencia Curricular: POO II Tema: Archivos de acceso secuencial
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 9 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Programa de Estudios: Ingeniería de Sistemas
✓ Así mismo, estas dos clases son las que definen los métodos
que sus subclases tendrán implementados y, de entre todas,
destacan los métodos read() y write() que leen y escriben
bytes de datos respectivamente.
- 19 -
19
FileInputStream FileOutputStream
- 20 -
20
Experiencia Curricular: POO II Tema: Archivos de acceso secuencial
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 10 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Programa de Estudios: Ingeniería de Sistemas
El primer constructor abre un flujo de salida hacia el archivo especificado por nombre, el
segundo hace lo mismo pero con la posibilidad de añadir datos a un fichero existente
(añadir = true), y el tercero lo hace a partir de un objeto File.
- 21 -
21
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 -
22
Experiencia Curricular: POO II Tema: Archivos de acceso secuencial
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 11 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Programa de Estudios: Ingeniería de Sistemas
- 23 -
23
FileReader FileWriter
- 24 -
24
Experiencia Curricular: POO II Tema: Archivos de acceso secuencial
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 12 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Programa de Estudios: Ingeniería de Sistemas
25
- 26 -
26
Experiencia Curricular: POO II Tema: Archivos de acceso secuencial
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 13 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Programa de Estudios: Ingeniería de Sistemas
- 27 -
27
DataInputStream DataOutputStream
- 28 -
28
Experiencia Curricular: POO II Tema: Archivos de acceso secuencial
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 14 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Programa de Estudios: Ingeniería de Sistemas
DataOutputStream
DataInputStream
- 29 -
29
- 30 -
30
Experiencia Curricular: POO II Tema: Archivos de acceso secuencial
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 15 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Programa de Estudios: Ingeniería de Sistemas
writeBoolean() writeChar()
֍ ֍
Escribe un valor de tipo boolean. Escribe un valor de tipo char.
writeByte() writeChars()
֍ ֍
Escribe un valor de tipo byte. Escribe un String como una secuencia
de caracteres.
writeBytes() writeShort()
֍ ֍
Escribe un String como una Escribe un valor de tipo short.
secuencia de bytes.
- 31 -
31
writeInt() writeDouble()
֍ ֍
Escribe un valor de tipo int. Escribe un valor de tipo double.
writeLong() writeUTF()
֍ ֍
Escribe un valor de tipo long. Escribe una cadena de caracteres en
formato UTF-8.
- 32 -
32
Experiencia Curricular: POO II Tema: Archivos de acceso secuencial
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 16 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Programa de Estudios: Ingeniería de Sistemas
- 33 -
33
readBoolean() readShort()
֍ ֍
Devuelve un valor de tipo Devuelve un valor de tipo short.
boolean.
readByte() readInt()
֍ ֍
Devuelve un valor de tipo byte. Devuelve un valor de tipo int.
readChar() readLong()
֍ ֍
Devuelve un valor de tipo char. Devuelve un valor de tipo long.
- 34 -
34
Experiencia Curricular: POO II Tema: Archivos de acceso secuencial
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 17 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Programa de Estudios: Ingeniería de Sistemas
֍ ֍ ֍ ֍
- 35 -
35
- 36 -
36
Experiencia Curricular: POO II Tema: Archivos de acceso secuencial
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 18 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Programa de Estudios: Ingeniería de Sistemas
ObjectInputStream ObjectOutputStream
- 37 -
37
- 38 -
38
Experiencia Curricular: POO II Tema: Archivos de acceso secuencial
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 19 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Programa de Estudios: Ingeniería de Sistemas
- 39 -
39
Programa
seriar deseriar
flujo flujo
Objetos
ObjectOutputStream ObjectInputStream
flujo flujo
FileOutputStream Archivo en el disco FileInputStream
- 40 -
40
Experiencia Curricular: POO II Tema: Archivos de acceso secuencial
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 20 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Programa de Estudios: Ingeniería de Sistemas
Deriva indirectamente de
OutputStream y permite escribir objetos
en un flujo de salida subordinado.
La escritura de objetos en disco se
realiza a través del
ObjectOutputStream. Para crear un
objeto de esta clase es necesario
disponer del FileOutputStream
asociado al archivo donde se va a
realizar la escritura.
Una vez creado el objeto, la clase
dispone del método
writeObject(Object obj) para realizar la
escritura del objeto en el disco.
- 41 -
41
- 42 -
42
Experiencia Curricular: POO II Tema: Archivos de acceso secuencial
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 21 -