Bonjour,
j'affiche un fichier dans un jTextArea, mais je voudrais le filtrer pour afficher seulement certaines lignes (il s'agit des réponses d'un serveur à une requête de DNS et d e whois sur une liste d'adresses IP)
j'ai donc créé une classe Filtrage qui contient toutes les expressions auxquelles je compare chaque début de ligne et qui passe un booleen à true s'il y a concordance.

classe filtrage :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
/**Filtre le contenu du fichier IPanalyse.txt pour afficher uniquement les infos pertinentes*/
public class Filtrage {
 
  /**Passe à true si la ligne en cours est pertinente*/
  public boolean PeutEcrire = false;
 
  /**Ligne du fichier*/
  private String Ligne = "";
 
  /**Tableau d'expressions régulières*/
  private String[] Expr = {
      "Adresse",
      "Address",
      "changed",
      "City",
      "Country",
      "country",
      "descr",
      "DNS ",
      "inetnum",
      "netname",
      "OrgName",
      "OrgID",
      "PostalCode",
      "remarks",
      "route",
      "status",
      "StateProv",
  };
 
  /**Nombre d'ocurrences du tableau Expr*/
  private int Long = Expr.length;
 
  /**Méthode qui compare le début de la ligne en cours à des expressions récurrentes*/
  public void Filtrer(String Ligne){
   for (int i = 0; i< Long; i++){
     if (Ligne.startsWith(Expr[i])) {
       if (Ligne.startsWith("OrgID:      LACNIC")) {Ligne += "\n" + "Pour plus d'informations, consultez whois.lacnic.net" + "\n";}
       PeutEcrire = true;
       }
     else PeutEcrire = false;
  }
}
}
classe manipfic qui gère les manipulations de fichiers :

déclaré en début de classe, avec les autres variables :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
/**classe qui filtre le fichier d'analyse avant de l'afficher */
 private Filtrage Filtre = new Filtrage();
 
 /**lecture de fichier*/
    public void Lire() {
     try
       {
       Ligne = tamponIn.readLine();//lecture de la ligne dans le tampon
       if (Ligne == null) tamponIn.close();//fermeture du tampon en fin de fichier
       }
     catch(IOException ioe){ JOptionPane.showMessageDialog(this, "erreur lecture",
        "",  JOptionPane.INFORMATION_MESSAGE);}
    }
 
/**ouverture et lecture du fichier temporaire pour affichage de l'analyse*/
    public void OuvrirAnalyse() {
   try
   {
     Texte = "";
     fichierEntree = new FileReader(Chemin);//ouvre le fichier pour le lire
     tamponIn = new BufferedReader(fichierEntree);//crée un tampon pour lire le flux
     Lire();
     while (Ligne != null) { //tant que la ligne lue n'est pas vide (not EOF)
       Filtre.Filtrer(Ligne); //vérifier si la ligne est pertinente
       if (Filtre.PeutEcrire = true) { //si la ligne est pertinente
         Texte += Ligne + "\n"; //ajout de la ligne dans le texte filtré
         Lire(); //continue à lire
       }
       else //sinon
         Lire(); //continue à lire
     }
    }
   catch(IOException ioe) {  JOptionPane.showMessageDialog(this, "erreur lecture analyse",
  "",  JOptionPane.INFORMATION_MESSAGE);}
}
 
fenêtre dans laquelle se trouve le jTextArea :
 
/**affiche le contenu du fichier IPanalyse.txt*/
private void AfficherAnalyse(){
   jTextAreaAffiche.setText("");//initialise le contenu du jTextArea
   manipfic.OuvrirAnalyse();//ouverture du fichier d'analyse
   jTextAreaAffiche.append(manipfic.Texte + "\n"); //ajout du texte filtré
}
Cependant, ça ne marche pas et j'ai encore le texte dans son intégralité ...
[ Modéré par vedaer ]
-> Ajout des balises code
[ Merci de respecter les Règles du Forum ]