Java NIO - Scatter(分散)

Java NIO - Scatter(分散) 首页 / Nio入门教程 / Java NIO - Scatter(分散)

Java的常规IO API相比,Java NIO是一种针对数据IO操作进行了更优化处理的新API,Java NIO提供从多个缓冲区读取数据或向多个缓冲区写入数据或将数据写入通道的功能。

为了实现从通道的多次读写,Java NIO提供了ScatteringByteChannelGatheringByteChannel API,如以下示例所示。

ScatteringByteChannel

为了从多个通道读取数据,无涯教程需要将数据从单个通道读取到多个缓冲区中, 使用ScatteringByteChannel read()方法从通道中将数据读取存入数组中,当缓冲区已存满,通道将自动继续填充下一个缓冲区。

以下示例显示了如何在Java NIO中执行数据分散

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/java-nio/java-nio-scatter.html

来源:LearnFk无涯教程网

C:/Test/temp.txt

Hello World!
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.ScatteringByteChannel;

public class ScatterExample {	
   private static String FILENAME="C:/Test/temp.txt";
   public static void main(String[] args) {
      ByteBuffer bLen1=ByteBuffer.allocate(1024);
      ByteBuffer bLen2=ByteBuffer.allocate(1024);
      FileInputStream in;
      try {
         in=new FileInputStream(FILENAME);
         ScatteringByteChannel scatter=in.getChannel();
         scatter.read(new ByteBuffer[] {bLen1, bLen2});
         bLen1.position(0);
         bLen2.position(0);
         int len1=bLen1.asIntBuffer().get();
         int len2=bLen2.asIntBuffer().get();
         System.out.println("Scattering : Len1=" + len1);
         System.out.println("Scattering : Len2=" + len2);
      } 
      catch (FileNotFoundException exObj) {
         exObj.printStackTrace();
      }
      catch (IOException ioObj) {
         ioObj.printStackTrace();
      }
   }
}

运行上面代码输出

Scattering : Len1=1214606444
Scattering : Len2=0

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

硅谷产品实战36讲 -〔曲晓音〕

React实战进阶45讲 -〔王沛〕

邱岳的产品实战 -〔邱岳〕

深入剖析Kubernetes -〔张磊〕

编辑训练营 -〔总编室〕

TensorFlow 2项目进阶实战 -〔彭靖田〕

跟着高手学复盘 -〔张鹏〕

手把手带你写一门编程语言 -〔宫文学〕

超级访谈:对话汤峥嵘 -〔汤峥嵘〕

好记忆不如烂笔头。留下您的足迹吧 :)