programmation Java (école d'ingénieur) · Chapitre 14 · Exercice de TD
Inverser un fichier
Fichiers et flux · niveau 1 (application)
Énoncé
Écrire un programme qui écrit dans fable-inverse.txt les lignes de fable.txt de la dernière à la première. Peut-on le faire sans garder tout le fichier en mémoire ?
Corrigé
List<String> lignes = new ArrayList<>(Files.readAllLines(Path.of("fable.txt")));
Collections.reverse(lignes);
Files.write(Path.of("fable-inverse.txt"), lignes);
De mouche ou de vermisseau.
Pas un seul petit morceau
Quand la bise fut venue :
Se trouva fort dépourvue
Tout l'été,
La Cigale, ayant chanté
La copie dans une ArrayList est nécessaire : la liste renvoyée par readAllLines est modifiable en pratique, mais la documentation ne le garantit pas. On ne peut pas éviter de garder tout le fichier : la première ligne à écrire est la dernière lue. Pour un fichier énorme, il faudrait le lire par la fin (accès direct avec RandomAccessFile), ce qui est bien plus compliqué.
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.