1213 threads [5] accés a fitxers

8
PROGRAMACIÓ CONCURRENT Accés a fitxers 5

Upload: oriol-torres

Post on 01-Jul-2015

68 views

Category:

Documents


4 download

TRANSCRIPT

PROGRAMACIÓ  CONCURRENT  

Accés  a  fitxers  5  

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.

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.

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.

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.

§  R a n d o m A c c e s s F i l e proporciona comandes per operar sobre el punter.

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" );

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  

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.