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 :classe manipfic qui gère les manipulations de fichiers :
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; } } }
déclaré en début de classe, avec les autres variables :
Cependant, ça ne marche pas et j'ai encore le texte dans son intégralité ...
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é }
[ Modéré par vedaer ]
-> Ajout des balises code
[ Merci de respecter les Règles du Forum ]
Partager