Java 8 Stream(基于资源).iterator()自动关闭资源?

时间:2016-12-02 14:55:02

标签: java iterator java-8 java-stream

Java 8 Stream.iterator()在完成后自动关闭流吗? 我想不是......

我有这样的事情:

class Provider implements Serializable {

  Iterator<String> iterator() {
    Stream<String> stream = new BufferedReader(...).lines();
    return stream.iterator();
  }
}

这个迭代器被其他一些类使用,它不知道迭代器是基于文件读取资源的。那是

class Consumer {
  void f() {
    Iterator<String> iterator = provider.iterator();
    // code that calls iterator methods at non-determined times
  }
}

我必须对文件进行流式传输,因为它太大而无法放入内存中。但是当迭代器没有更多元素时,我希望能够自动关闭资源,这样我就不会泄漏资源。 Provider类为Serializable,我无法将Stream或BufferedReader作为成员。

有没有好办法呢?

0 个答案:

没有答案