Stream Java 8 : Comment enregistrer dans un fichier proprement ?
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:
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:
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();
}
}
} |
Citation:
Envoyé par Exemple de fichier InputFile.txt
Enregistrement technique Blabla
Enregistrement fonctionnelle dudule
Enregistrement technique Titi
une ligne bizarre
Si vous avez une idée sur la façon de procéder qui serai potentiellement plus propre, n'hésitez pas !
Cordialement,
Patrick Kolodziejczyk.