0

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?

halfer
  • 19,824
  • 17
  • 99
  • 186
Orphide
  • 1
  • 1

0 Answers0