二进制文件中的对象的Java流

时间:2018-11-29 18:52:37

标签: java file stream nio

我正在尝试读取一个包含对象列表的文件,可以通过逐步读取一些字节来轻松解析它们。 但是在这种情况下,我需要有一个对象流。 通过搜索,我得到的是Stream<String> Files.lines,它仅适用于文本文件,不适用于二进制文件。

那么如何从二进制文件生成对象流?

1 个答案:

答案 0 :(得分:2)

两个主要选项:

  1. 实现一个Spliterator,然后通过调用StreamSupport.stream(Spliterator<T> spliterator, boolean parallel)

  2. 从中创建一个流
  3. 实现一个Supplier,然后通过调用Stream.generate(Supplier<T> s)

  4. 从中创建一个流

#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
}