[JAVA] Recuperer information d'un fichier

Fermé
tababa - 16 avril 2016 à 12:23
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 16 avril 2016 à 16:53
Bonjour,
Je suis ici car j'ai un problème je suis entrain d'essayer de réaliser un pendu
en java en utilisant un dictionnaire mais je ne trouve pas comment
récupérer seulement 1 mot a la ligne numéro "x"
A voir également:

2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
16 avril 2016 à 15:35
Bonjour,

Le plus efficace est de stocker tout ton dictionnaire en mémoire (dans un tableau ou une liste par exemple), tu lis donc qu'une seule fois le fichier (au démarrage du programme) et après tu accèdes à tout les éléments que tu veux directement dans la mémoire.

Exemple :

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;

public class Test {
   public static void main(String[] args) throws IOException {
      List<String> dico = Files.readAllLines(Paths.get("C:/dico.txt"));
      System.out.println(dico.get(12));
      System.out.println(dico.get(34));
      System.out.println(dico.get(56));
   }
}
0
j'y avais penser aussi en stockant tous dans un tableau puis générant un nombre aléatoire et récupérant le mot à l'indice de ce nombre mais le fait est qu'il y a plus de 22 000 mots et j'ai peur que ça lag :s


ps : pourrait tu détailler ton code avec des "\\" car je suis un débutant en java et je ne comprend pas le code que tu as ecrit
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
16 avril 2016 à 16:53
22 000 mots, avec disons 8 lettres par mots (en moyenne), ça fait 176 000 lettres, chacune faisant 1 octet (ou 2 pour les lettres avec accents), soit moins de 200 Ko...
Ton application ne va pas ramer pour 200 Ko en mémoire !

En plus l'accès à la mémoire vive est plus rapide que l'accès au disque dur.
Ce qui pourrait ralentir ton programme c'est d'aller lire ton fichier, d'où l'intérêt de ne le faire qu'une seule fois au début du programme.

Quant à détailler mon code... il n'y a que deux lignes !
Même pour un débutant il n'y a rien de compliqué !

// Je lis toutes les lignes du fichier "C:/dico.txt"
// Le résultat est stocké dans la liste "dico"
List<String> dico = Files.readAllLines(Paths.get("C:/dico.txt"));

// J'affiche l'élément 12 de la liste "dico"
// Ça correspond donc à la ligne 12 du fichier "C:/dico.txt"
System.out.println(dico.get(12));
0