Bonjour,
En utilisant la "nouvelle" API Stream de Java 8, je suis tombé sur un cas d'utilisation où je n'ai pas trouvé de documentation, mais qu'il me semble important de traiter correctement. A savoir la sauvegarde d'un Stream<String> dans un fichier.
J'ai bien une version fonctionnelle, mais celle-ci me semble être purement bancale dans la gestion des erreurs.
Code : 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 package org.k.developpez.forum; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Paths; public class Test { public static void main(String[] args) throws IOException { LineConsumer lineConsumer = new LineConsumer("OutputFile.txt"); // On filtre les lignes contenant le text qu'on veux depuis le fichier de base Files.lines(Paths.get("InputFile.txt"), Charset.defaultCharset()) .filter(line -> line.contains("Enregistrement technique")) .forEach(lineConsumer); lineConsumer.close(); } }
Code : 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 package org.k.developpez.forum; import java.io.FileWriter; import java.io.IOException; import java.util.function.Consumer; public class LineConsumer implements Consumer<String> { private FileWriter writer; public LineConsumer(String file) throws IOException { writer = new FileWriter(file, true); } @Override public void accept(String line) { //TODO Ici avoir un try catch me pose problème. Cependant, je ne sais pas comment gérer correctement celle-ci au niveau de la classe test. try { writer.write(line + "\r\n"); } catch (IOException e) { e.printStackTrace(); } } public void close(){ try { writer.flush(); writer.close(); } catch (IOException e) { e.printStackTrace(); } } }Si vous avez une idée sur la façon de procéder qui serai potentiellement plus propre, n'hésitez pas !Envoyé par Exemple de fichier InputFile.txt
Cordialement,
Patrick Kolodziejczyk.
Partager