Ce n'est pas Java en soi, mais vous pouvez rencontrer des problèmes où vous avez écrit quelque chose dans un fichier, mais il n'a pas encore été écrit - il peut être dans un cache quelque part, et la lecture à partir du même fichier peut ne pas être vous donne réellement les nouvelles informations.
Version courte - utilisez flush() ou tout autre appel système pertinent pour vous assurer que vos données sont réellement écrites dans le fichier.
Notez que je ne parle pas du cache disque au niveau du système d'exploitation - si vos données entrent ici, elles devraient apparaître dans un read() après ce point. Il se peut que le langage lui-même mette en cache les écritures, attendant qu'un tampon se remplisse ou que le fichier soit vidé/fermé.