【发布时间】:2017-03-12 06:52:54
【问题描述】:
假设我们有一些网络或其他进程,它们以块的形式获取我们需要的数据。每个块都是一个字节数组。数据的本质只是一个由多行组成的简单文本文件。我们要逐行处理这个文件。这可能吗?
一个简单的方法是等到所有数据都来了,同时将所有块添加到 ByteBuffer,或者简单地通过 System.arrayCopy 将它们合并到一个大字节数组中。在此之后,我们可以从中创建大字符串并逐行读取,或者创建 ByteArrayInputStream 并在转换为 InputStreamReader 后使用一些 Reader 读取。
好的,但是我们可以用真正的流方式来做,在下一个块到达时读取它吗?不保证块包含一些完整的行数。它可以在行的中间结束,这应该被处理,即在这种情况下,我们应该等待下一个块。
有没有办法在不等待文件结束的情况下做到这一点?
【问题讨论】:
标签: java stream inputstream