Java 从CsvtoBean创建的流在单个元素之后完成

Java 从CsvtoBean创建的流在单个元素之后完成,java,stream,opencsv,Java,Stream,Opencsv,我正在使用OpenCSV读取csv文件,并希望使用流处理数据。然而,OpenCSV网站声明他们“在未来很多年内都不会使用Java8”,所以我想需要自己修复流部分 我可以让OpenCSV一次将整个csv文件解析为一个列表,然后从这个列表创建一个流。这很好,但是当流实际需要它时,我宁愿让OpenCSV解析一行代码。所以我想我应该用: CsvToBean<DataElement> elements = new CsvToBeanBuilder<DataElement>(...)

我正在使用OpenCSV读取csv文件,并希望使用流处理数据。然而,OpenCSV网站声明他们“在未来很多年内都不会使用Java8”,所以我想需要自己修复流部分

我可以让OpenCSV一次将整个csv文件解析为一个列表,然后从这个列表创建一个流。这很好,但是当流实际需要它时,我宁愿让OpenCSV解析一行代码。所以我想我应该用:

CsvToBean<DataElement> elements = new CsvToBeanBuilder<DataElement>(...).withType(DataElement.class).build();
Stream<DataElement> s = StreamSupport.stream(elements.spliterator(), false);
CsvToBean-elements=new-CsvToBeanBuilder(…).withType(DataElement.class).build();
streams=StreamSupport.Stream(elements.spliterator(),false);
其中
CsvToBean
实现
Iterable
。但是流总是在一个项目之后结束。我真的不明白为什么。有人知道吗


提前感谢。

尝试改用IterablesvToBean,然后看看是否可以在Java 8代码中使用

谢谢你的回复。不过,IterableCSVToBean及其构建器似乎已被弃用,所以现在我将坚持一次解析所有内容。对不起,我的不好。我应该检查一下JavaDocs。在CsvToBean中,调用迭代器方法,然后将迭代器转换为流。免责声明:我是opencsv的项目管理员,我编写了IterableCSVToBean,这就是为什么它突然出现在我的脑海中。Andrew Jones更新了CsvToBean以返回一个迭代器,该迭代器使IterableCSVToBean成为冗余的—这就是为什么它被弃用的原因。希望有帮助。:)不用担心,首先感谢您保持OpenCSV。(还有一点话题,但如果您是项目管理员,是否值得用标准谓词替换接口CsvToBeanFilter?)。目前OpenCSV需要Java7,谓词是Java8。我犯了3的错误,跳java版本,结果很快,所以我有一个“Apache Con规则”,我检查几个Apache共享项目(java,集合),当他们跳Java版本时,我可以考虑跳跃版本。