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 = 7Corrigé
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
- 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.