Adloun

programmation Java (école d'ingénieur) · Chapitre 14 · Application directe du cours

Rechercher un mot

Fichiers et flux · niveau 1 (application)

Énoncé

Écrire un programme Grep qui reçoit un mot et un nom de fichier en arguments, et affiche chaque ligne du fichier qui contient ce mot (sans tenir compte des majuscules), précédée de son numéro. Il termine par le nombre de lignes trouvées. Lire le fichier ligne par ligne.

Corrigé

On met en minuscules la ligne et le mot avant de chercher avec contains.


public class Grep {
    public static void main(String[] args) {
        String mot = args.length > 0 ? args[0] : "la";
        Path f = Path.of(args.length > 1 ? args[1] : "fable.txt");
        int trouvees = 0;
        try (BufferedReader in = Files.newBufferedReader(f, StandardCharsets.UTF_8)) {
            String ligne;
            int numero = 0;
            while ((ligne = in.readLine()) != null) {
                numero++;
                if (ligne.toLowerCase().contains(mot.toLowerCase())) {
                    System.out.println(numero + ": " + ligne);
                    trouvees++;
                }
            }
        } catch (IOException e) {
            System.out.println("Erreur : " + e.getMessage());
            return;
        }
        System.out.println(trouvees + " ligne(s) trouvée(s)");
    }
}

Sur fable.txt, java Grep la fable.txt affiche :


1: La Cigale, ayant chanté
4: Quand la bise fut venue :
2 ligne(s) trouvée(s)

La recherche est une recherche de sous-chaîne : « la » serait aussi trouvé dans « salade ». Chercher un mot entier demanderait de découper la ligne avec split.

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 →