2. ACCÉS
A
LA
INFORMACIÓ
Tipus
d’accessos
a
dades
Accés aleatori (“random”): Igual que en el cas de la memòria
RAM (Random Acces Memory), els arxius d’accés aleatori
permeten accedir a les dades de forma no seqüencial – desordenada
-.
Accés seqüencial (fluxe o “streams”): Les dades es llegeixen
seqüencialment – des del principi de l’arxiu fins al final.
Concatenació (canyeries o “pipes”): De vegades, resulta útil
definir connexions entre programes que funcionen simultàniament
dins d’una mateixa màquina.
3. ACCÉS
A
LA
INFORMACIÓ
Seqüencial
vs.
aleatori
Accés seqüencial: Llegeix un arxiu començant des del
principi i llegeix els continguts sences – un byte per cop –
fins que assoleix el final.
Accés aleatori: Permet accedir a localitzacions específiques
en un arxiu I canviar unes determinades localitzacions.
4. ACCÉS
A
LA
INFORMACIÓ
Mètodes
d’escriptura
§ Els arxius d’accés seqüencial són
extremadament útils per la majoria de
les aplicacions; ara bé, de vegades són
necessaris arxius d’accés aleatori que
permetin accedir als seus continguts en
forma no seqüencial – o aleatòria - .
§ La classe RandomAccessFile del paquet
java.io, implementa un arxiu d’accés
aleatori. Es pot utilitzar tant per lectura
com per l’escriptura de bytes.
5. ACCÉS
A
LA
INFORMACIÓ
Mètodes
d’escriptura
§ Tot objecte instància de
RandomAccessFile suporta
el concepte de punter que
indica la posició actual dins
de l’arxiu.
§ La metodologia del punter es
basa que comença en 0 i es
mesura en bytes.
§ RandomAccessFile
proporciona comandes per
operar sobre el punter.
6. ACCÉS
A
FITXERS
PER
POSICIÓ
Creació
d’un
fitxer
d’accés
aleatori
L’argument mode determina si es té accés de solament
lectura (r) o de lectura/escriptura (r/w).
Per exemple, es pot obrir un fitxer d’una base de dades per
actualitzar-la:
RandomAccessFile elMeuArxiu = new RandomAccessFile( "/tmp/
res.dbf","rw" );
7. ACCÉS
A
FITXERS
PER
POSICIÓ
Dels mètodes que es poden utilitzar amb els punters dels
fitxers, trobem:
Seek
()è
Permet
moure
el
punter
a
un
byte
n
específic
(comptat
des
del
començament
del
fitxer).
getFilePointer
()
è
Permet
aconseguir
la
posició
actual
del
punter
del
fitxer.
length
()
è
Permet
determinar
el
número
de
bytes
que
hi
ha
en
un
fitxer.
f.seek (n);
long fileLength = f.length ();
Long n= f.getFilePointer(); // tipus “long” perquè els fitxer poden ser molt
grans
8. ACCÉS
A
FITXERS
PER
POSICIÓ
Exemple
10
• Què fa aquest programa?
• Modifica la crida al punter perquè,
enlloc de la segona línia, vull que se’m
mostri la segona i la tercera?
• Fes el mateix perquè es mostrin totes.