我正在尝试读取一个包含对象列表的文件,可以通过逐步读取一些字节来轻松解析它们。
但是在这种情况下,我需要有一个对象流。
通过搜索,我得到的是Stream<String> Files.lines
,它仅适用于文本文件,不适用于二进制文件。
那么如何从二进制文件生成对象流?
答案 0 :(得分:2)
两个主要选项:
实现一个Spliterator
,然后通过调用StreamSupport.stream(Spliterator<T> spliterator, boolean parallel)
实现一个Supplier
,然后通过调用Stream.generate(Supplier<T> s)
#2是最简单的:
try (BufferedReader in = Files.newBufferedReader(path)) {
Stream.generate(() -> readNext(in))
.forEach(obj -> ...); // or whatever your stream needs to do
}
static MyObject readNext(BufferedReader in) {
// code here
}