Bonjour,
j'ai une question : Quelle est la meilleure méthode pour lire un String ligne par ligne ?
je m'explique : j'ai environ 16820 fichiers à lire 1 par 1, c'est des fichiers .eml. je dois lire le corps du message. Jusque là tout va bien
voici ma fonction qui lit ces fichiers :
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 public synchronized 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; FileReader fr; BufferedReader br; Properties props; Session mailSession; InputStream source; MimeMessage message; Email email; for (String file : allFiles) { f = new File(file); fr = new FileReader(f); br = new BufferedReader(fr); 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); // System.out.println(email.getText()); body = email.getText(); BufferedReader reader = new BufferedReader(new StringReader(body)); String line = reader.readLine(); while (line != null) { System.out.println(line.length() + " " + line); //pour l'instant je ne fais qu'afficher pour tester line = reader.readLine(); } reader.close(); } br.close(); fr.close(); } } catch (IOException | MessagingException exception) { System.out.println("Erreur lors de la lecture : " + exception.getMessage()); } }
perso j'ai utilisé BufferedReader reader = new BufferedReader(new StringReader(<string>)); mais j'ai vu qu'il y avait d'autres façons de le faire comme :
ou :
Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 final String eol = System.getProperty("line.separator"); output = output.substring(output.indexOf(eol + 1));
ou encore :
Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part String[] lines = myString.split(System.getProperty("line.separator"));
voilà
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Scanner scanner = new Scanner(myString); while (scanner.hasNextLine()) { String line = scanner.nextLine(); // process the line } scanner.close();
je voulais juste savoir lequel est le mieux en sachant le nombre de fichiers à lire
d'après ce que j'ai vu sur internet c'est BufferedReader le plus rapide mais je voulais vous demander pour être sur (pour mon cas)
merci
Partager