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作为成员。
有没有好办法呢?