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 :
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 :
Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
String[] lines = myString.split(System.getProperty("line.separator"));
ou encore :
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();
voilà
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