Partage
  • Partager sur Facebook
  • Partager sur Twitter

lire une ligne aléatoirement du fichier en java

lire une ligne aléatoirement du fichier en java

Sujet résolu
    16 novembre 2012 à 19:54:46

    Bonjour tous

    J'ai besoin de votre aide.
    je veux afficher une ligne au hasard a partir d'un fichier en java
    j'ai cherche dans internet mais je trouve pas mieux que ça.mais le problème c'est le code ne m'affiche pas la ligne complet.
    j'ai besoin de connaitre comment calculer les nombres des lignes du fichier et est ce que je peut utiliser le random pour afficher une ligne au hasard.

    Voici mon code
    public static void main(String[] args) {
    		try {
    			RandomAccessFile monFichier = new RandomAccessFile("QuestionAleatoire", "rw");
    
    			// 2 représente le sixième enregistement puisque le premier commence à 0
    			// 4 est la taille des données puisqu'elles sont des entiers de type int
    			// (codé sur 4 octets)
    	
    			monFichier.seek(2*4);
    			
    			System.out.println(monFichier.readLine());
    		
    			monFichier.close();
    	
    			} catch (Exception e) {
    	
    			e.printStackTrace();
    			}}}
    


    Merci d'avance de votre réponse et de votre aide.
    :)
    • Partager sur Facebook
    • Partager sur Twitter
      16 novembre 2012 à 20:18:20

      Salut,

      Peux tu décrire de façon plus précise le contenu de ton fichier ? N'oublie pas que les retours à la ligne sont des données.

      Si tu veux vraiment afficher une ligne au hasard dans un fichier qui a une structure irrégulière, le plus simple est de compter le nombre de lignes, faire un rand entre 0 et ce montant, puis de compter x lignes, x étant le résultat du rand.
      • Partager sur Facebook
      • Partager sur Twitter
        16 novembre 2012 à 23:23:10

        Salut
        Merciiiii Iljakasper j'ai réussi de calculer le nombre des lignes du fichier et le numéro du random mais le problème reste sur le troisième étape c'est du comment afficher la ligne X j'ai utilisé la commande readLine(); mais il accepte pas les paramètre comment faireeee ????? :(:euh:
        • Partager sur Facebook
        • Partager sur Twitter
          17 novembre 2012 à 1:43:08

          soit, si ton fichier est suffisamment petit tu mets tout dans un tableau (ou équivalent), et tu accèdes à la ligne en question par l'indice.
          soit, si ton fichier est trop grand pour cette technique,pour afficher la Nième ligne , tu lis N-1 lignes sans garder le résultat, et tu affiches la suivante
          • Partager sur Facebook
          • Partager sur Twitter
            17 novembre 2012 à 10:04:24

            Merciiii de vos réponse mais tu peux m'écrire les commande pour le deuxième étape(pour lire N-1 ligne et afficher le suivant ) .merci d'avance
            • Partager sur Facebook
            • Partager sur Twitter
              17 novembre 2012 à 10:58:12

              Tu dois faire quelque chose comme ça:

              monFichier.seek(0); // Pour revenir au début du fichier
              for (int i=0 ; i<ligneDesiree ; i++) // On lit ligneDesiree lignes
                  monFichier.readline();
              String resultat = monFichier.readline(); // On lit et stocke la ligne qu'on cherchait
              


              (le numéro de la première ligne est 0)

              Remarque: cet algorithme est extrêmement lent, si tu dois le faire souvent dans ton programme il vaut mieux, dans le cas d'un fichier court, stocker le fichier (chaque ligne dans une case d'un tableau de string), et dans le cas d'un fichier long, construire un index de lignes (faire un tableau dans lequel tu enregistres toutes les positions du fichier correspondant aux numéros de lignes).
              • Partager sur Facebook
              • Partager sur Twitter
                17 novembre 2012 à 17:37:16

                Merciiiiiii mon problème est enfin résolu :D:D:D
                • Partager sur Facebook
                • Partager sur Twitter

                lire une ligne aléatoirement du fichier en java

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown