M3 - Programació
De wikiserver
Contingut
UF1: Programació Estructurada
Activitats
UF3: Fonament de gestió de fitxers
Continguts
Fitxers orientat a byte
Accés següèncial
Les dades s’emmagatzemen com una seqüència de valors, i per tant, l’esquema general que s'aplica en fitxers orientats a caràcter també es pot aplicar a aquest altre tipus.
Representació de les dades en format binari.
Tipus | Paura clau Java | Mide (bytes) |
---|---|---|
caràcter | char | 2 |
byte | byte | 1 |
enter curt | short | 2 |
enter simple | int | 4 |
enter llarg | long | 8 |
real de simple precisió | float | 4 |
real de doble precisió | doble | 8 |
Inicialització
import java.io.File; import java.io.RandomAccessFile; // s’usa tant per llegir com per escriure dades RandomAccessFile raf = new RandomAccessFile(File ruta, String mode); // File ruta per especificar la ruta del fitxer // String mode per especificar el mode de treball a l'hora de processar el fitxer
Dels modes de treball possibles el dos més utilitzats són:
- r: mode lectura. Errors si el fitxer no existeix o si s'invoca a mètodes d'escriptura.
- rw: mode escriptura-lectura. Si el fitxer no existeix, es crearà un de nou buit. Si existeix, no s’esborren les seves dades.
Escriptura de dades
L’única manera de generar fitxers orientats a byte que puguin ser llegits correctament és mitjançant codi d’un programa.
Cada cop que es fa una operació de lectura o escriptura, l’apuntador es desplaça automàticament el mateix nombre de bytes amb què s’ha operat.
Mètodes disponibles per escriure dades:
Mètode | Bytes escrits |
---|---|
writeBoolean(boolean b) | 1 |
writeByte (byte v) | 1 |
writeChar(char c) | 2 |
writeDouble(double d) | 8 |
writeFloat(float f) | 4 |
writeInt(int i) | 4 |
writeLong(long l) | 8 |
writeShort(short s) | 2 |
Exemple d'escriptura de 20 enters:
public class EscriureEntersBinari { public static void main(String[] args) throws IOException { EscriureEntersBinari programa = new EscriureEntersBinari(); programa.inici(); } public void inici() throws FileNotFoundException, IOException { File f = new File("Enters.bin"); RandomAccessFile raf = new RandomAccessFile(f, "rw"); int valor = 1; for (int i = 0; i < 20; i++) { raf.writeInt(valor); valor = valor * 2; } System.out.println("Fitxer escrit satisfactòriament."); raf.close(); } }
</pre>