Adloun

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

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →