Partage
  • Partager sur Facebook
  • Partager sur Twitter

tester si le mot existe dans un fichier.txt

en utilisant NetBeans

Sujet résolu
    24 mars 2021 à 17:40:21

    Bonsoir à tous ,

    j'ai un fichier.txt qui contient plusieurs mots, J'arrive a affiche tous les mots de mon fichier mais je veux afficher seulement le mot écrit par l'utilisateur

    ainsi que si le mot existe dans fichier.txt, il affiche vrai sinon faux.

    voici mon code au dessous :

          try 
           {
    String monFichier = "texte.txt";
        FileInputStream fis = new FileInputStream(monFichier);
         String nomSaisi=jTextField1.getText();
        int n;
         while ((n = fis.available())> 0)
             { byte[] b = new byte[n];
               int result = fis.read(b);
                     if (result == -1) break;
                    
                     String s = new String(b);
                      jTextField2.setText(s);
             }

    et merci d'avance :)

    • Partager sur Facebook
    • Partager sur Twitter
      24 mars 2021 à 18:13:19

      Hello, 

      peux-tu expliquer le soucis que tu as avec ton code ? L'idée c'est de:

      CHARGER FICHIER
      POUR chacune des lignes
      	SI ligne contient tont mot
      		incrémenter compteur 
      	FIN SI
      FIN POUR
      
      SI COMPTEUR > 0
      	Afficher "le mot" + MOT + " a été trouvé " + compteur + "fois."
      FIN SI



      • Partager sur Facebook
      • Partager sur Twitter
        25 mars 2021 à 12:44:10

        Bonjour,

        Merci beaucoup pour votre réponse .

        j'ai essayée de faire ce code au dessous mais toujours affiche faux .

        De plus ,mon objectif c'est d'afficher seulement le mot écrit par l'utilisateur

        ainsi que si le mot existe dans fichier.txt.

        voici mon code au dessous :

          try 
               {
        String monFichier = "res.ind";
            FileInputStream fis = new FileInputStream(monFichier);
             String nomSaisi=jTextField1.getText();
            int n;
             while ((n = fis.available())> 0)
                 { byte[] b = new byte[n];
                   int result = fis.read(b);
                         if (result == -1) break;
                        
                         String s = new String(b);
                         if (nomSaisi.contains(s))
                         {
                          jTextField2.setText(s);
                         }
                         else 
                         {jTextField2.setText("faux");}
                 }
        
        }
        catch (Exception e) {;}

        et merci d'avance :)

        • Partager sur Facebook
        • Partager sur Twitter
          25 mars 2021 à 12:57:55

          il faut plutôt regarder si s contient nomSaisie que l'inverse (s étant plus grand que nomSaisie, nomSaisie ne peut pas contenir s)

          Après, je ne vois pas ici l'utilité de la boucle while, puisque tu lis le contenu du fichier en une fois (éventuellement, le transformer en test pour voir si le fichier n'est pas vide)

          • Partager sur Facebook
          • Partager sur Twitter
            25 mars 2021 à 13:07:38

            catch (Exception e) {;}

            On en a pendu pour moins que ça!

            Et il ne faut pas laisser le Stream ouvert.

            • Partager sur Facebook
            • Partager sur Twitter
              25 mars 2021 à 13:07:48

              Tu dois inverser la condition.

              Tu as quoi comme mot en entrée de ton application ? la méthode constains est sensible à la case.

              Si tu rentres FOO et que tu as dans ton fichier foo la méthode affichera faux.

              Pour lire le fichier tu peux remplacer

              while ((n = fis.available())> 0) { 
                byte[] b = new byte[n];
                int result = fis.read(b);
                ...
              }

              tu peux remplacer par 

              FileInputStream fis = new FileInputStream(...);
              String string = new String(fis.readAllBytes());
              ...
              fis.close();


              Mais attention avec les encodage UTF-8 / ISO-8859-1. Si ton fichier est en UTF-8 tu peux remplacer par:

              FileInputStream fis = new FileInputStream(...);
              String string = new String(fis.readAllBytes(), StandardCharsets.UTF_8);
              ...
              fis.close();

              Il faut faire attention avec les fichiers volumineux car là tu charges l'ensemble du fichier.

              Si par la suite, tu as un besoin de lire ligne par ligne, tu peux utiliser:

              BufferedReader in = new BufferedReader(new FileReader("foo.in"));
              



              -
              Edité par rybla 25 mars 2021 à 13:10:50

              • Partager sur Facebook
              • Partager sur Twitter
                25 mars 2021 à 13:17:24

                Merci beaucoup pour votre réponse .

                j'ai essayé de faire s dans nomSaisie mais même problème il affiche tout les mots de mon fichier.txt .

                je veux comparer le mot écrit par l'utilisateur el le mot qui existe dans fichier.txt  pour dire que  le mot  qu' a été écrit à exister dans fichier.txt . et Merci d'avance :) .

                Voici le code au dessus :

                       try 
                       {
                String monFichier = "res.ind";
                    FileInputStream fis = new FileInputStream(monFichier);
                     String nomSaisi=jTextField1.getText();
                    int n;
                     while ((n = fis.available())> 0)
                         { byte[] b = new byte[n];
                           int result = fis.read(b);
                                 if (result == -1) break;
                                
                                 String s = new String(b);
                                 if (s.contains(nomSaisi))
                                 {
                                  jTextField2.setText(s);
                                 }
                                 
                         }
                
                }
                catch (Exception e) {;}
                • Partager sur Facebook
                • Partager sur Twitter
                  25 mars 2021 à 13:20:00

                  Là tu affiches tout le fichier avec cette ligne:

                  jTextField2.setText(s);
                  

                  si tu veux afficher le mot, il suffit de remplacer s par nomSaisi

                  Et pour rejoindre Play50hz

                  catch (Exception e) {;}

                  c'est plus que moche. Et tu dois fermer le fichier.

                  -
                  Edité par rybla 25 mars 2021 à 13:21:15

                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 mars 2021 à 13:44:49

                    Merci Merci beaucoup mon problème est  résolue :):D
                    • Partager sur Facebook
                    • Partager sur Twitter
                      25 mars 2021 à 14:46:38

                      tu as fais le fis.Close(); et modifier (ou supprimer) le catch(Exception e) {;} ?
                      • Partager sur Facebook
                      • Partager sur Twitter

                      tester si le mot existe dans un fichier.txt

                      × 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