我正在尝试使用streams和forEach逐行读取.CSV,但我无法使其正常工作。
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”这是我的.CSV绝对路径。我尽力修复此代码,但我一直都遇到同样的错误。
线程“main”中的异常java.io.UncheckedIOException:java.nio.charset.MalformedInputException:输入长度= 1 在java.io.BufferedReader $ 1.hasNext(BufferedReader.java:574) 在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) 在facturation.Facturation.main(Facturation.java:43)
第43行是对我的函数printFile的调用,第65行是.forEach。
所以我的问题很简单,我做错了什么?