Exemple de RandomAccessFile en Java
Java RandomAccessFile fournit la possibilité de lire et d'écrire des données dans un fichier. RandomAccessFile fonctionne avec le fichier comme un grand tableau d'octets stocké dans le système de fichiers et un curseur avec lequel nous pouvons déplacer la position du pointeur de fichier.
Java RandomAccessFile
La classe RandomAccessFile fait partie de Java IO. Lors de la création d'une instance de RandomAccessFile en Java, nous devons fournir le mode d'ouverture du fichier. Par exemple, pour ouvrir le fichier en mode lecture seule, nous devons utiliser « r » et pour les opérations de lecture-écriture, nous devons utiliser « rw ». En utilisant le pointeur de fichier, nous pouvons lire ou écrire des données dans le fichier à accès aléatoire à n'importe quelle position. Pour obtenir le pointeur de fichier actuel, vous pouvez appeler la méthode getFilePointer() et pour définir l'index du pointeur de fichier, vous pouvez appeler la méthode seek(int i). Si nous écrivons des données à un index où des données sont déjà présentes, elles seront remplacées.
Exemple de lecture avec Java RandomAccessFile
Nous pouvons lire un tableau d'octets à partir d'un fichier en utilisant RandomAccessFile en Java. Ci-dessous se trouve le pseudo code pour lire un fichier en utilisant RandomAccessFile.
RandomAccessFile raf = new RandomAccessFile("file.txt", "r");
raf.seek(1);
byte[] bytes = new byte[5];
raf.read(bytes);
raf.close();
System.out.println(new String(bytes));
Dans la première ligne, nous créons une instance de RandomAccessFile pour le fichier en mode lecture seule. Ensuite, dans la deuxième ligne, nous déplaçons le pointeur de fichier à l'index 1. Nous avons créé un tableau d'octets de longueur 5, donc lorsque nous appelons la méthode read(bytes), 5 octets sont lus depuis le fichier vers le tableau d'octets. Enfin, nous fermons la ressource RandomAccessFile et imprimons le tableau d'octets à la console.
Exemple d'écriture avec Java RandomAccessFile
Voici un exemple simple montrant comment écrire des données dans un fichier en utilisant RandomAccessFile en Java.
RandomAccessFile raf = new RandomAccessFile("file.txt", "rw");
raf.seek(5);
raf.write("Data".getBytes());
raf.close();Puisque RandomAccessFile traite le fichier comme un tableau d'octets, l'opération d'écriture peut remplacer les données ainsi qu'ajouter à un fichier. Tout dépend de la position du pointeur de fichier. Si le pointeur est déplacé au-delà de la longueur du fichier puis que l'opération d'écriture est appelée, alors des données inutiles seront écrites dans le fichier. Vous devez donc faire attention à cela lors de l'utilisation de l'opération d'écriture.
Exemple d'ajout avec RandomAccessFile
Tout ce dont nous avons besoin est de nous assurer que le pointeur de fichier est à la fin du fichier pour ajouter à un fichier. Ci-dessous se trouve le code pour ajouter à un fichier en utilisant RandomAccessFile.
RandomAccessFile raf = new RandomAccessFile("file.txt", "rw");
raf.seek(raf.length());
raf.write("Data".getBytes());
raf.close();Exemple de RandomAccessFile en Java
Voici un exemple complet de RandomAccessFile en Java avec différentes opérations de lecture et d'écriture.
package com.journaldev.files;
import java.io.IOException;
import java.io.RandomAccessFile;
public class RandomAccessFileExample {
public static void main(String[] args) {
try {
// file content is "ABCDEFGH"
String filePath = "/Users/pankaj/Downloads/source.txt";
System.out.println(new String(readCharsFromFile(filePath, 1, 5)));
writeData(filePath, "Data", 5);
//now file content is "ABCDEData"
appendData(filePath, "pankaj");
//now file content is "ABCDEDatapankaj"
} catch (IOException e) {
e.printStackTrace();
}
}
private static void appendData(String filePath, String data) throws IOException {
RandomAccessFile raFile = new RandomAccessFile(filePath, "rw");
raFile.seek(raFile.length());
System.out.println("current pointer = "+raFile.getFilePointer());
raFile.write(data.getBytes());
raFile.close();
}
private static void writeData(String filePath, String data, int seek) throws IOException {
RandomAccessFile file = new RandomAccessFile(filePath, "rw");
file.seek(seek);
file.write(data.getBytes());
file.close();
}
private static byte[] readCharsFromFile(String filePath, int seek, int chars) throws IOException {
RandomAccessFile file = new RandomAccessFile(filePath, "r");
file.seek(seek);
byte[] bytes = new byte[chars];
file.read(bytes);
file.close();
return bytes;
}
}C'est tout pour RandomAccessFile en Java.

