将输入流放入对象中,并将它们用于流操作

问题描述 投票:0回答:1
例如,解析器可以从

ndjson

文件中读取,消费者可以通过Internet发送该对象的一个属性。

该实现不好,它需要将整个文件加载到内存中,然后将整个对象列表加载到内存中。

我可以在没有开销的情况下做这个?
我猜测每个一代是一个新对象的地方,但是我不确定如何关闭它,因为流是用于无限流的。
我猜想这不应该是一个可觉得的,因为迭代次数会多次,这不是这种情况,一旦消耗了数据丢失,
    

您可以创建一个Stream.generate

,这基本上是一个懒惰的列表。 IT似乎输入流包含

Text

,您想在流中读取

线

,因此我建议您在

Sequence
上操作。

BufferedReader

仅当请求新元素时,才能运行lambda内的代码,并且仅在下一个调用
kotlin
1个回答
0
投票
时运行。

sequence { ... }将取一个

yield
并用consumer

循环消费。

注意,此序列只能被消费once,并且您应该确保在关闭缓冲读者后不会消耗它。 您可以轻松地从Sequence<Object>

使用

for
.

如果我的假设是错误的,而您却是一个
而不是一个
BufferedReader
,则适用相同的原则。编写一个循环,该循环仅在每次迭代中读取所需的数据尽可能多的数据,
InputStream
解析结果。
    

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.