2 pièce(s) jointe(s)
extraire une partie d'un corps d'un message
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 :
Pièce jointe 347208Pièce jointe 347213
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.
Code:
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());
}
} |
ç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)
est-ce que vous pouvez m'aider svp :( :help: