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