Si un accès direct à une position quelconque du fichier est nécessaire, on devra utiliser la classe RandomAccessFile , qui fonctionne à la fois en écriture et en lecture, permettant de sauvegarder, puis de restituer, la position d'une opération dans le fichier. Le second d'argument du constructeur est une chaîne qui spécifie le mode d'accès : "rw" indique un accès en lecture ("r" pour << read >>) et en écriture ("w" pour << write >>), et "r" indique un accès en lecture seulement.
On obtient la position courante à l'aide de la méthode getFilePointer(), qui retourne un long. On peut se positionner à l'aide de la méthode seek(), qui a un paramètre entier de type long indiquant un déplacement dans le fichier.
RandomAccessFile inOut =
new RandomAccessFile("out.txt", "rw");
inOut.seek(inOut.length()); // positionnement à la fin
inOut.writeBytes("etc., ..."); // ajout de caractères
inOut.seek(0); // positionnement au début
inOut.writeBytes("Au début"); // écrase le début !
inOut.seek(0); // positionnement au début
String s = inOut.readLine(); // lecture d'une ligne
inOut.close();
Cette classe implémente les interfaces DataInput et DataOutput.