I'm trying to read a .CSV line by line using streams and forEach, but I can't make it work properly.
public static void printFile(String file)
{
try(Stream<String> stream = Files.lines(Paths.get(file)))
{
stream
.filter(line -> line.startsWith("00"))
.forEach(System.out::println);
} catch (IOException ex) {
Logger.getLogger(Facturation.class.getName()).log(Level.SEVERE, null, ex);
}
}
"file" here is my .CSV absolute path. I tried my best repairing this code but I keep getting the same error.
Exception in thread "main" java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1 at java.io.BufferedReader$1.hasNext(BufferedReader.java:574) at java.util.Spliterators$IteratorSpliterator.tryAdvance(Spliterators.java:1811) at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126) at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.findAny(ReferencePipeline.java:469) at facturation.Facturation.factureFile(Facturation.java:65) at facturation.Facturation.main(Facturation.java:43)
Line 43 is the call to my function printFile and line 65 is the .forEach.
So my question is quite simple, what am I doing wrong?