Adloun

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

Fichier de configuration

Fichiers et flux · niveau 2

Énoncé

Un fichier de configuration contient des lignes clé = valeur. Les lignes vides et celles qui commencent par # sont ignorées ; une ligne sans = est signalée puis ignorée ; les espaces autour de la clé et de la valeur ne comptent pas.

  • Écrire une méthode static Map<String, String> lire(Path f) qui renvoie les couples clé-valeur.
  • L'appliquer au fichier ci-dessous, et afficher le double de la largeur.

# Configuration du jeu
largeur = 1024
hauteur=768

titre = Les Cigales
son activé
volume = 7

Corrigé

On cherche la position du premier = avec indexOf, et l'on découpe avec substring : la valeur peut ainsi contenir elle-même un signe égal. Un TreeMap range les clés dans l'ordre alphabétique.


static Map<String, String> lire(Path f) throws IOException {
    Map<String, String> config = new TreeMap<>();
    List<String> lignes = Files.readAllLines(f);
    for (int i = 0; i < lignes.size(); i++) {
        String l = lignes.get(i).strip();
        if (l.isEmpty() || l.startsWith("#")) continue;      // vide ou commentaire
        int egal = l.indexOf('=');
        if (egal < 0) {
            System.out.println("Ligne " + (i + 1) + " ignorée (pas de « = ») : " + l);
            continue;
        }
        config.put(l.substring(0, egal).strip(), l.substring(egal + 1).strip());
    }
    return config;
}

public static void main(String[] args) throws IOException {
    Map<String, String> c = lire(Path.of("jeu.conf"));
    System.out.println(c);
    int largeur = Integer.parseInt(c.getOrDefault("largeur", "800"));
    System.out.println("largeur x 2 = " + 2 * largeur);
}

Ligne 6 ignorée (pas de « = ») : son activé
{hauteur=768, largeur=1024, titre=Les Cigales, volume=7}
largeur x 2 = 2048

Les valeurs sont des chaînes : il faut les convertir (Integer.parseInt) avant de calculer. getOrDefault fournit une valeur par défaut si la clé est absente du fichier.

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 →