Está en la página 1de 8

Universidad Nacional Facultad de Ingeniería

de Trujillo Escuela Profesional de Ingeniería de Sistemas

PROGRAMACIÓN
ORIENTADA A OBJETOS II
Ms. Zoraida Yanet VIDAL MELGAREJO
zvidal@unitru.edu.pe

Sesión 02

ARCHIVOS EN JAVA:
ARCHIVOS DE
ACCESO ALEATORIO

2
Curso: Programación Orientada a Objetos II Tema: Archivos de acceso aleatorio
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 1 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Escuela Profesional de Ingeniería de Sistemas

Archivos de acceso aleatorio

• El tipo de acceso aleatorio permite escribir o


leer datos de una ubicación concreta dentro
del archivo.

• El paquete java.io contiene la clase RandomAccessFile que proporciona las


capacidades que permiten este tipo de acceso directo.

• Un flujo de esta clase permite realizar tanto operaciones de lectura y escritura sobre el
archivo vinculado al mismo.

-3-

Archivos de acceso aleatorio


La clase RandomAccessFile desciende directamente de la clase Object e
implementa las interfaces DataInput y DataOutput (utilizados generalmente para
transmitir tipos básicos a través de un stream).

-4-

4
Curso: Programación Orientada a Objetos II Tema: Archivos de acceso aleatorio
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 2 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Escuela Profesional de Ingeniería de Sistemas

Archivos de acceso aleatorio

• Un flujo de la clase RandomAccessFile sirve para


leer y escribir en archivos con posicionamiento
aleatorio, es decir, a diferencia de los archivos de
acceso secuencial que sólo permiten la lectura del
siguiente dato del archivo o la escritura después del
último escrito; con acceso aleatorio se puede leer o
escribir en cualquier parte del archivo.

• Para el posicionamiento se utiliza un puntero que


debe colocarse en la posición a partir de la cual se
quiere escribir o leer.

-5-

Archivos de acceso aleatorio

• Después de la operación de lectura o escritura el puntero


se habrá desplazado tantos bytes como se hayan escrito o
leído, al igual que sucede con los demás streams, en los
que el tratamiento es secuencial.

• Si se coloca el puntero al final del archivo y después se


escribe, se estará aumentando el tamaño del archivo, pero
si el puntero está colocado en una posición intermedia, los
datos escritos sobrescribirán los existentes en el archivo.

• Si durante la lectura se llega al final del archivo se lanza la


excepción EOFException (subtipo de IOException).

-6-

6
Curso: Programación Orientada a Objetos II Tema: Archivos de acceso aleatorio
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 3 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Escuela Profesional de Ingeniería de Sistemas

Constructores de la clase RandomAccessFile

public RandomAccessFile
Constructores: (File objetoFile, String modo)
Permiten instanciar objetos de tipo Crea un stream vinculado con el archivo
RandomAccessFile. especificado en la referencia de tipo File

public RandomAccessFile
(String nombreArchivo, String modo) String modo

Similar al anterior, pero se puede El argumento modo puede ser:


indicar el nombre del archivo en • r (read): Sólo se permiten realizar
lugar de usar un objeto de la clase operaciones de lectura.
File. • rw (read/write): Se pueden realizar
operaciones de lectura y de
escritura sobre el archivo.
-7-

La clase
RandomAccessFile

Premio Nobel de Literatura


• Por ejemplo, para crear un stream para tener un acceso aleatorio al archivo
“alumnos.dat”,y que permita realizar operaciones de lectura y escritura:

RandomAccessFile raf;
raf = new RandomAccessFile(“alumnos.dat", "rw" );

• La clase RandomAccessFile cuenta con los mismos métodos de lectura y de escritura


que DataInputStream y DataOutputStream con read() y write(), así como métodos que
permiten realizar el desplazamiento del puntero, conocer el tamaño del archivo, etc.

-8-

8
Curso: Programación Orientada a Objetos II Tema: Archivos de acceso aleatorio
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 4 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Escuela Profesional de Ingeniería de Sistemas

La clase RandomAccessFile

Escribe un valor de Escribe un valor Escribe un String Escribe un valor


tipo boolean. de tipo byte. como una de tipo char.
secuencia de
bytes.

Escribe un String Escribe un valor Escribe un valor Escribe un valor


como una de tipo short. de tipo int. de tipo long.
secuencia de
caracteres.

-9-

La clase RandomAccessFile

Escribe un valor de Escribe un valor Escribe una cadena de caracteres en


tipo float. de tipo double. formato UTF-8. Los dos primeros bytes
especifican el número de bytes de datos
que serán escritos.

Devuelve un Devuelve un Devuelve un Devuelve un valor


valor de tipo valor de tipo valor de tipo de tipo short.
boolean. byte. char.

- 10 -

10
Curso: Programación Orientada a Objetos II Tema: Archivos de acceso aleatorio
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 5 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Escuela Profesional de Ingeniería de Sistemas

La clase RandomAccessFile

Devuelve un valor Devuelve un Devuelve un


de tipo int. valor de tipo valor de tipo
long. float.

Devuelve un valor Devuelve una cadena de caracteres en formato


de tipo double. UTF-8. Los dos primeros bytes especifican el
número de bytes de datos que serán leídos.

- 11 -

11

La clase RandomAccessFile
• La clase RandomAccessFile proporciona también los siguientes métodos:

֍ ֍ ֍ ֍
long void void long
getFilePointer() seek(long pos) skipBytes(int cont) length()
Indica la posición del Coloca al puntero del Mueve el puntero cont Devuelve el tamaño, en
puntero del archivo, archivo en la posición bytes. Si el valor de bytes, del archivo.
en bytes desde el indicada; desplazándose cont es positivo, se
principio del archivo pos bytes desde el mueve el puntero
comienzo del archivo. La hacia el final del
posición 0 indica el archivo, y si es
comienzo del archivo negativo, hacia el
principio.

- 12 -

12
Curso: Programación Orientada a Objetos II Tema: Archivos de acceso aleatorio
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 6 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Escuela Profesional de Ingeniería de Sistemas

Ejercicio propuesto

Premio Nobel de Literatura


Cuando un estudiante accede a la universidad, se matricula en un conjunto de
asignaturas correspondientes a la carrera a la que ingresó. Se requiere desarrollar una
aplicación que permita realizar el seguimiento de las asignaturas en las que un estudiante
se matricula a lo largo de su estancia en la universidad para conocer en cada momento
su estado actual. El programa deberá gestionar la información de los estudiantes, los cursos
y las matrículas de los estudiantes en dichas asignaturas.

- 13 -

13

Ejercicio propuesto

Condiciones: Premio Nobel de Literatura


• Un estudiante se matricula en una o más asignaturas (mínimo 1, máximo 6) en un periodo
académico determinado y al término de cada periodo académico se registra la
calificación que ha obtenido.
• Se debe registrar el número de vez en que el estudiante se matricula en una misma
asignatura. Sólo puede matricularse nuevamente en la misma asignatura si no ha logrado
obtener una calificación aprobatoria mínima de 11.
• El número máximo de veces que un estudiante puede matricularse en una asignatura es
4. Si en una cuarta matrícula no logra aprobar la asignatura, debe abandonar los
estudios por haber perdido su condición de estudiante.

- 14 -

14
Curso: Programación Orientada a Objetos II Tema: Archivos de acceso aleatorio
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 7 -
Universidad Nacional Facultad de Ingeniería
de Trujillo Escuela Profesional de Ingeniería de Sistemas

Ejercicio propuesto

Clases: Premio Nobel de Literatura


• La clase PeriodoAcadémico representa el año y el semestre (1, 2, Nivelación).
• La clase Estudiante representa un estudiante matriculado y define los siguientes atributos:
Código, DNI, nombre, apellidos, dirección.
• La clase Asignatura representa una asignatura y define los siguientes atributos: Código,
nombre, ciclo, número de créditos.
• La clase Matrícula representa la matrícula registrada por un estudiante y define los
siguientes atributos: Fecha, datos del Periodo académico, datos del estudiante y datos
de las asignaturas en las cuales el estudiante se ha matriculado.

- 15 -

15

Ejercicio propuesto

Premio Nobel de Literatura


Requerimientos: La aplicación a desarrollar debe permitir:
• Registrar los datos de los estudiantes, las asignaturas y los periodos académicos.
• Registrar la matrícula de un estudiante.
• Registrar la calificación obtenida por el estudiante en las asignaturas en las cuales se ha
matriculado.
• Listar los datos de un estudiante dado su código, mostrando los cursos en los que se ha
matriculado.
• Listar los datos de una asignatura dado su código, mostrando los datos de los estudiantes
que se han registrado en dicha asignatura, según un periodo académico.

- 16 -

16
Curso: Programación Orientada a Objetos II Tema: Archivos de acceso aleatorio
Docente: Ms. Zoraida Yanet Vidal Melgarejo Página - 8 -

También podría gustarte