[JAVA] Extraire des lignes d'un fichier texte

Résolu
Bonjour,

Je suis actuellement en train d'essayer de récupérer des lignes d'un fichier texte.
Je récupère un fichier texte d'un switch :

GigabitEthernet1/1 is up, line protocol is up (connected)
Hardware is Gigabit Ethernet Port, address is 0022.5512.7b00 (bia 0022.5512.7b00)
Description: fr-scle-0x2-spare2
MTU 1500 bytes, BW 1000000 Kbit, DLY 10 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation ARPA, loopback not set
Keepalive set (10 sec)
Full-duplex, 1000Mb/s, link type is auto, media type is 1000BaseSX
input flow-control is on, output flow-control is on
ARP type: ARPA, ARP Timeout 04:00:00
Last input 00:00:01, output never, output hang never
Last clearing of "show interface" counters never
Input queue: 0/2000/0/0 (size/max/drops/flushes); Total output drops: 0
Queueing strategy: fifo
Output queue: 0/40 (size/max)
5 minute input rate 1000 bits/sec, 3 packets/sec
5 minute output rate 1000 bits/sec, 1 packets/sec
158750283 packets input, 52415245126 bytes, 0 no buffer
Received 99952970 broadcasts (50134602 multicasts)
0 runts, 0 giants, 0 throttles
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
0 input packets with dribble condition detected
3605845 packets output, 299411824 bytes, 0 underruns
0 output errors, 0 collisions, 0 interface resets
0 babbles, 0 late collision, 0 deferred
0 lost carrier, 0 no carrier
0 output buffer failures, 0 output buffers swapped out

Mais les deux seules lignes qui m'intéresses sont celles que j'ai mises en gras.

J'ai donc commencer a réaliser un petit programme en Java, mais pour l'instant il ne fait que lire ligne par ligne mon fichier texte, auriez vous des idées pour extraires ces deux lignes ?
Voici mon fichier Java tel qu'il est pour l'instant :

import java.io.*;
import java.util.*;

class Lecture{

public static void main(String[] args){

String filePath = "Charge-fr-scle-0x2-spare1.txt";

try{

BufferedReader buff = new BufferedReader(new FileReader(filePath));

try {
String line;
// Lire le fichier ligne par ligne
// La boucle se termine quand la méthode affiche "null"

while ((line = buff.readLine()) != null) {
System.out.println(line);
}

buff.close(); //Lecture fini donc on ferme le flux
}

catch (IOException e){
System.out.println(e.getMessage());
System.exit(1);
}

}
catch (IOException e) {
< System.out.println(e.getMessage());
System.exit(1);
}
}
}

8 réponses

Résumé de la discussion

L’objectif est d’extraire deux lignes précises d’un fichier texte généré par un switch, en se focalisant sur des informations de débit et trafic parmi un flux volumineux. Des solutions de parsing ont été proposées, incluant l’usage de indexOf pour repérer les segments pertinents et l’emploi de regex et de splitting pour isoler et stocker ces lignes. Les exemples partagés montrent comment lire ligne par ligne, accumuler les lignes d’intérêt dans une chaîne, puis les découper ou les écrire dans un fichier selon les besoins. En complément, l’échange mentionne des variantes comme l’utilisation de Pattern et de split pour traiter des blocks de texte et sélectionner les numéros et valeurs pertinents.

Bobot (l’IA à votre service)
  1. Salut,

       import java.io.*; 
       import java.util.*; 
       import java.util.regex.Pattern; //<<<<<<<<<<<<<<<<<<<<<<<<
    
       class Lecture{
          
          public static void main(String[] args){ 
          
             String filePath = "Charge-fr-scle-0x2-spare1.txt";
             String garder = "";
          
             try{ 
             
                BufferedReader buff = new BufferedReader(new FileReader(filePath)); 
             
                try { 
                   String line; 
                // Lire le fichier ligne par ligne 
                // La boucle se termine quand la méthode affiche "null" 
                
                
                   while ((line = buff.readLine()) != null) { 
                      System.out.println(line);
                    
                    // ajouter  ces 3 lignes <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                      int index = line.indexOf("put rate"); // partie commune des lignes à garder
                      if(index > 0) // si on trouve "put rate"
                         garder+= line + "|";
                   	
                   }
                 
                 // Ajouter les lignes qui suivent ... <<<<<<<<<<<<<<<<<<<<<<<<<
                   //System.out.println("\n\ngarder = " + "\"" + garder + "\"");
                   
                   Pattern pattern = Pattern.compile("\\|"); // import java.util.regex.Pattern;
                   String[] tabGarder = pattern.split(garder); // pour mettre les lignes conservées 
    					                                            // dans le tableau tabGarder
                   
                   System.out.println("");
    					
    					// Résultat:
                   for(int i = 0; i < tabGarder.length; i++)
                   {
                      String lGardee = tabGarder[i];
                      System.out.println("lGardee: " + "\"" + lGardee + "\"");
                   } // ... Jusqu'ici <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                
                   buff.close(); //Lecture fini donc on ferme le flux 
                } 
                
                   catch (IOException e){ 
                      System.out.println(e.getMessage()); 
                      System.exit(1); 
                   } 
             
             } 
                catch (IOException e) { 
                   System.out.println(e.getMessage()); 
                   System.exit(1); 
                } 
          } 
       }
    


    Cordialement,

    Dan
    1
    1. Merci beaucoup pour ta réponse, ça marche super =)
      Juste une petite question : C'est quoi Pattern ? Une méthode java qui te permet de garder certaines lignes ?
      0
    2. s'il vous plaî , aidez-moi pour un programme de code java permet de:
      1-lire un fichier texte et d'extraire les mots pour les afficher .les mots séparés par des espaces, virgules,points,symboles
      2-affichage des mots sans considération des articles , des symboles, les verbes être ,....:le ; la, il est
      3-les # mots doivent enregistrés dans un tableau: la création d'un tableau à partir de fichier texte , il faut aussi faire une fonction d'affichage de ce tableau pour vérifier s'il soit correctement rempli
      4-réaliser une fonction qui compte l'occurrence ou la fréquence des mots dans le texte, mettez aussi ces informations dans tableau de fréquence
      5-les mots clés extraits automatiquement de ce texte seront seulement les 10 mots de fréquence les plus importants , il faut trier les tableaux des mots clés et de fréquences selon les fréquence
      0
    3. voila j'ai deux fichiers txt
      fichier1.txt contient: id-doc / id-cluster / score
      fichier2.txt contient: (num-cluster)/ id-doc
      je dois faire un code java pour créer un nouveau fichier txt qui sera comme suit:
      id-doc / (num-cluster) / score
      quelqu'un aurait une idée?
      ou proposer moi une autre méthode :(
      Merci
      0
    4. Bonsoir j'ai un fichier txt dont il y a
      Service Nom de l'image PID Nom de la sessio Num�ro de s Utilisation
      ===== ========================= ======== ================ ===
      Service BodetServiceTomcat.exe 1920 Services 0 325�208 Ko

      moi je veux juste afficher la deuxieme ligne celle la "
      Service BodetServiceTomcat.exe 1920 Services 0 325�208 Ko "
      exactement je veux juste recuprer les valeurs entier " 325�208 Ko "
      0