Exemple Java RandomAccessFile

Java RandomAccessFile offre la possibilité de lire et écrire des données dans un fichier. RandomAccessFile fonctionne avec le fichier comme un 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 depuis le fichier d’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 indice où des données sont déjà présentes, cela les écrasera.

Exemple de lecture de fichier aléatoire Java

Nous pouvons lire un tableau d’octets à partir d’un fichier en utilisant RandomAccessFile en Java. Voici le pseudo-code pour lire le 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), alors 5 octets sont lus à partir du fichier dans le tableau d’octets. Enfin, nous fermons la ressource RandomAccessFile et imprimons le tableau d’octets dans la console.

Exemple d’écriture de fichier 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 que les 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 et que l’opération d’écriture est appelée, alors il y aura des données indésirables écrites dans le fichier. Vous devez donc faire attention à cela lors de l’utilisation de l’opération d’écriture.

Exemple d’ajout de fichier RandomAccessFile

RandomAccessFile raf = new RandomAccessFile("file.txt", "rw");
raf.seek(raf.length());
raf.write("Data".getBytes());
raf.close();

Exemple de RandomAccessFile 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 {
			

// Le contenu du fichier est "ABCDEFGH"

			String filePath = "/Users/pankaj/Downloads/source.txt"; 
			
			System.out.println(new String(readCharsFromFile(filePath, 1, 5)));

			writeData(filePath, "Data", 5);
			

// Maintenant, le contenu du fichier est "ABCDEData"

			
			appendData(filePath, "pankaj");
			

// Maintenant, le contenu du fichier est "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.

Source:
https://www.digitalocean.com/community/tutorials/java-randomaccessfile-example