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.










Répondre avec citation



La plupart des réponses à vos questions sont déjà dans les



Partager