Java NIO - Gather
-
简述
众所周知,与Java的传统IO API相比,Java NIO是用于数据IO操作的更优化的API.Java NIO提供的另一个附加支持是从/到多个缓冲区读取/写入数据到通道。这种多次读写支持称为“分散和收集”,其中数据在读取数据的情况下从单个通道分散到多个缓冲区,而在写入数据的情况下,数据从多个缓冲区收集到单个通道。为了实现这种从通道的多次读取和写入,有散射字节通道和收集字节通道API,Java NIO提供了用于读取和写入数据,如下面的示例所示。 -
GatheringByteChannel
写入多个通道 − 在此中,我们将来自多个缓冲区的数据写入单个通道。为此,将再次分配多个缓冲区并将其添加到缓冲区类型数组中。然后,此数组作为参数传递给 GatheringByteChannel write() 方法,该方法然后按照缓冲区在数组中出现的顺序从多个缓冲区写入数据。这里要记住的一点是只写入缓冲区的位置和极限之间的数据。以下示例显示了如何在 Java NIO 中执行数据收集 -
输出
最后可以得出结论,Java NIO中的分散/收集方法是在正确使用时作为优化和多任务处理的引入的。它允许您将您读取的数据分离到多个存储桶中,或将不同的数据块组装成一个整体的繁重工作委托给操作系统。毫无疑问,通过避免缓冲区副本,这可以节省时间并更有效地使用操作系统,并减少需要编写和调试的代码量。