Quelle est la meilleure méthode pour lire un String ligne par ligne ?
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:
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:
1 2
| final String eol = System.getProperty("line.separator");
output = output.substring(output.indexOf(eol + 1)); |
ou :
Code:
String[] lines = myString.split(System.getProperty("line.separator"));
ou encore :
Code:
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 ;)