Accedi ai file direttamente in Java: un po’ di teoria
La classe RandomAccessFile
in Java fornisce un accesso casuale a un file. Ciò significa che è possibile leggere e scrivere dati in qualsiasi punto del file, non solo dall’inizio.
- La classe RandomAccessFile è un’implementazione del modello di accesso casuale ai file. Ciò significa che consente di accedere a qualsiasi punto di un file in modo efficiente.
- La classe RandomAccessFile è basata su un buffer. Ciò significa che i dati vengono letti e scritti in blocchi di dati, invece che byte per byte.
- La classe RandomAccessFile è thread-safe. Ciò significa che può essere utilizzata da più thread contemporaneamente senza conflitti.
Dimensioni delle variabili in Java
In Java, le variabili sono memorizzate in memoria heap. La dimensione di una variabile in memoria heap è determinata dal tipo di dati della variabile.
- Tipi di dati primitivi
byte
– 8 bitshort
– 16 bitint
– 32 bitlong
– 64 bitfloat
– 32 bitdouble
– 64 bitchar
– 16 bit
- Tipi di dati oggetti
String
–Date
– 8 byteLocale
– lunghezza variabile
Creazione di un oggetto RandomAccessFile
Per creare un oggetto RandomAccessFile
, è necessario specificare il nome del file e il modo in cui si desidera accedere al file.
RandomAccessFile file = new RandomAccessFile("myfile.dat", "rw");
Il modo in cui si desidera accedere al file può essere uno dei seguenti:
r
: letturaw
: scritturarw
: lettura e scrittura
Scrittura in un file
Per scrivere dati in un file, è possibile utilizzare i metodi write()
, writeUTF()
, writeInt()
e writeChar()
.
write()
: scrive un byte alla voltawriteUTF()
: scrive una stringa codificata UTF-8writeInt()
: scrive un numero interowriteChar()
: scrive un carattere
file.write(1); // scrive un byte
file.writeUTF("Hello, world!"); // scrive una stringa
file.writeInt(10); // scrive un numero intero
file.writeChar('a'); // scrive un carattere
Lettura da un file
Per leggere dati da un file, è possibile utilizzare i metodi read()
, readUTF()
, readInt()
e readChar()
.
read()
: legge un byte alla voltareadUTF()
: legge una stringa codificata UTF-8readInt()
: legge un numero interoreadChar()
: legge un carattere
int b = file.read(); // legge un byte
String str = file.readUTF(); // legge una stringa
int n = file.readInt(); // legge un numero intero
char c = file.readChar(); // legge un carattere
Accedi ai file direttamente in Java: lettura e scrittura
import java.io.RandomAccessFile;
public class Example {
public static void main(String[] args) throws IOException {
RandomAccessFile file = new RandomAccessFile("myfile.dat", "rw");
// Scrivi un numero intero
file.writeInt(10);
// Scrivi una stringa
file.writeUTF("Hello, world!");
// Scrivi un carattere
file.writeChar('a');
// Scrivi un altro numero intero
file.writeInt(20);
file.close();
// Leggi un numero intero
int n = file.readInt();
// Leggi una stringa
String str = file.readUTF();
// Leggi un carattere
char c = file.readChar();
// Leggi un altro numero intero
int n2 = file.readInt();
System.out.println(n); // 10
System.out.println(str); // Hello, world!
System.out.println(c); // a
System.out.println(n2); // 20
}
}
Questo codice scrive i seguenti dati in un file:
10
Hello, world!
a
20
Poi legge i dati dal file e stampa i valori come segue:
10
Hello, world!
a
20