bonjour,
je viens vers vous car je suis bloqué.
en faite j'ai une fonction qui lis des fichiers .eml
le corps des messages ressemblent à ceci :
premier fichier : fhgzkfjzghiueghdfgzeiutghzepthaezbgpiebhrerrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrtuegf 2e fichier :
je lis ligne par ligne pour extraire les données de la sections 1 et 3 (à terme je dois mettre ces données dans des propriétés d'objet pour ensuite stocker en base)
en gros chaque ligne des sections 1 et 3 seront des propriétés et la section 2 sera une seule propriété.
pour la section 1 et 3 c'est bon, c'est pour la section 2 que je ne sais pas comment faire
j'ai fais pleins d'essais : par exemple j'ai essayé avec un numéro de ligne et ensuite faire un while pour dire que tant que je suis dans la section 2 j'affiche les données mais ça ne marche pas
le problème c'est que la section 2 varie d'un fichier à l'autre, et dans certains il y a plusieurs fois 3 sections.
j'ai même essayé de faire 2 while séparé : le premier parcours les fichiers et repère les lignes où commencent les sections 2 et 3 et ensuite dans le while que j'utilise je met un while pour dire que tant que la ligne actuelle est entre la section 2 et 3 j'affiche les données mais rien ne marche
j'ai surement mal fais quelque chose mais je n'arrive pas à voir c'est quoi.
ça c'est la dernière version que j'ai. même ça c'est pas bon parce que j'ai vu qu'il y avait des données qui sont en dehors des 3 sections (que je n'ai pas besoin de traiter)
Code JAVA : 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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98 public void lireTout() { ArrayList<String> allFiles = new ArrayList<String>(); listeRepertoire(new File("C:\\Users\\moi\\Desktop\\bilans batch satelit 2016\\dossiers extraites"), allFiles); try { File f; Properties props; Session mailSession; InputStream source; MimeMessage message; Email email; for (String file : allFiles) { f = new File(file); System.out.println(f.getAbsolutePath()); // utilisation de l'API MimeMessage pour ouvrir les fichiers .eml props = System.getProperties(); props.put("mail.host", "smtp.dummydomain.com"); props.put("mail.transport.protocol", "smtp"); mailSession = Session.getDefaultInstance(props, null); source = new FileInputStream(f); message = new MimeMessage(mailSession, source); // utilisation de l'API Email pour la lecture du corps des messgages. String body = null; if (!f.getName().endsWith(".html")) { email = EmailConverter.mimeMessageToEmail(message); // corps du message body = email.getText(); BufferedReader reader = new BufferedReader(new StringReader(body)); String line = reader.readLine(); String section1 = "============================== SECTION 1 =============================="; String section2 = "============================== SECTION 2 =============================="; String section3 = "============================== SECTION 3 =============================="; String end = "======================================================================="; String nomBatch = "Nom du BATCH"; String versionBatch = "Version Architecture BATCH"; String versionAppli = "Version:"; String debut = "Début du Batch"; String fin = "Fin du Batch"; String duree = "Duree du Batch"; while (line != null) { /* ============================== SECTION 1 ============================== */ if (line.contains(nomBatch)) { System.out.println("Batch :" + this.decouper(line, ":")); } if (line.contains(versionBatch)) { System.out.println("Version Batch : " + this.decouper(line, ":")); } if (line.contains(versionAppli)) { System.out.println("Version Appli : " + this.decouper(line, ":")); } if (line.contains(debut)) { System.out.println("Début : " + this.decouper(line, ":")); } /*if (!line.contains(nomBatch) && !line.contains(versionBatch) && !line.contains(versionAppli) && !line.contains(debut) && !line.contains(fin) && !line.contains(duree) && !line.contains(section1) && !line.contains(section2) && !line.contains(section3) && !line.contains(end)) { System.out.println(line); }*/ /* ============================== SECTION 3 ============================== */ if (line.contains(fin)) { System.out.println("Fin : " + this.decouper(line, ":")); } if (line.contains(duree)) { System.out.println("Durée : " + this.decouper(line, ":")); } line = reader.readLine(); } reader.close(); } } } catch (IOException | MessagingException exception) { System.out.println("Erreur lors de la lecture : " + exception.getMessage()); } }
est-ce que vous pouvez m'aider svp![]()
![]()
Partager