Bonjour,
je dois effectuer un programme pour parcourir un fichier et en possédant un adresse ip, je dois supprimer tout un bloc.
le fichier a cette structure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
define host{
use linux_server
host_name routeur9
address 192.168.54.1
}
donc pour adresse 192.168.54.1 je supprime tout le bloc à partir de define.

mais le problème est que j'arrive pas à localiser le bloc contenant l'adresse choisie.
voici le code :



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
try {                File file = new File ("/home/user/host.txt");
                                 //lecture du fichier
                               StringBuilder builder = new StringBuilder();
                               final Scanner sc = new Scanner(new FileInputStream("/home/user/host.txt"));
                               while (sc.hasNext())
                               {
                                   builder.append(sc.nextLine().trim());
                               }
                               sc.close();
                               builder.trimToSize();
                               //préparation de la regexp
                               final Pattern p = Pattern.compile("\\{[^\\}\\{]*\\}");
                               Matcher m = p.matcher(builder.toString());
                               int begin = 0, end = 0;
                               //parse l'expression
                               BufferedWriter sortiroutt = new BufferedWriter(new FileWriter("/home/user/routeursupp.txt", true));
                               while (m.find()) {
                                   begin = m.start();
                                   end = m.end();
 
                                   //analyser le bloc
                               if(m.equals("192.162.54.150"))
                               {  // écrire le bloc à supprimer dans un autre fichier
                                   BufferedWriter sortirout = new BufferedWriter(new FileWriter("/home/user/routeur_gardé.txt", true));
                                   sortirout.write(builder.toString()+"\n");
                                   sortirout.close();
 
 
                               }
                               else {
                                   // écrire le bloc dans un fichier temporaire
                                       sortiroutt.write(builder+"\n");   
                               }
                               }
                               sortiroutt.close();
                               //prépare pour le prochain bloc
                                   builder = new StringBuilder(builder.substring(end));
                                   m = p.matcher(builder);  
      } catch(java.io.IOException e) {
               e.printStackTrace();
            }


il me retourne tjs la liste multiplié pls fois et sans suppression.

merci de votre aide.