*介绍

---GatheringByteChannel和ScatteringByteChannel接口,实现对有序字节数组的读取,使得协议数据和固定数组内容的处理更加方便.

---实现类

DatagramChannel,SocketChannel,FileChannel,SinkChannel

---GatheringByteChannel,long write(ByteBuffer[] srcs, int offset, int length)

srcs,数据来源; offset,srcs数组的偏移量; length,获取最大srcs的个数.

long,返回写入的个数.

---ScatteringByteChannel,long read(ByteBuffer[] dsts, int offset, int length)

dsts,要写入的数组; offset,开始使用的buffer位置;  length,使用的最大buffer数

*示例,

ChannelGatherTest示例/*** Feb 23, 2011 by dzh*/
package channel;import java.io.File;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;/*** @author dzh* 协议,name[名字]|sex[性别],分隔符"|"* 获取数据,去除分割符,写入person.txt文件*/
public class ChannelGatherTest {private static final String SEPERATOR ="\\|";private static final String ENCODING ="utf-8";private static final String DATA ="戴忠|男";   //源数据private static final String TPATH ="/home/dzh/gather.txt"; //文件路径public static void main(String[] args) throws Exception {ByteBuffer[] bufs =scatterData();gatherData(bufs);}private static void gatherData(ByteBuffer[] bufs) throws Exception{File file =new File(TPATH);if(!file.exists())file.createNewFile();FileOutputStream fos =new FileOutputStream(file);FileChannel fc =fos.getChannel();while(fc.write(bufs)>0){//do others};fos.close();}private static ByteBuffer[] scatterData() throws Exception{String[] data =DATA.split(SEPERATOR);ByteBuffer nameBuf =ByteBuffer.wrap(data[0].getBytes(ENCODING));ByteBuffer sexBuf =ByteBuffer.wrap(data[1].getBytes(ENCODING));return new ByteBuffer[]{nameBuf,sexBuf};}}

转载于:https://www.cnblogs.com/bronte/articles/1962188.html

Channel~scatter and gather相关推荐

  1. Pytorch中scatter与gather操作

    文章目录 数据发散scatter 带聚集的发散scatter_add_ onnx中scatterND 数据聚集gather 数据发散scatter 函数原型pytorch官方文档scatter_: s ...

  2. 我的并行计算之路(三)MPI集合通信之Scatter和Gather

    集合通信对比点对点通信来说,确实要方便许多,基本上不需要考虑各个进程该怎么发送,该怎么接收的问题,只要是使用一个通信子,函数接口自己就完成了.从进程的角度考虑,集合通信在分配任务量的时候更加平均,使各 ...

  3. java组件介绍_Java组件介绍 - osc_wws45aot的个人空间 - OSCHINA - 中文开源技术交流社区...

    1.String string对象的不变性.被final关键字修饰. 使用charat方法替代startwith/endwith方法(提高性能) 使用buffer(方法同步,性能较差)和builder ...

  4. NIO - Scatter/Gather

    1.Scatter  从一个Channel读取的信息分散到N个缓冲区中(Buufer). 2.Gather  将N个Buffer里面内容按照顺序发送到一个Channel. Scatter/Gather ...

  5. JavaNIO - Scatter Gather

    Scatter & Gather指在多个缓冲区上实现一个简单的 I/O 操作.减少或避免了Buffer间的拷贝和系统调用. Channel Write操作 Write操作 Channel Re ...

  6. Java NIO之Channel(通道)

    **Java高级特性增强-NIO 本部分网络上有大量的资源可以参考,在这里做了部分整理并做了部分勘误,感谢前辈的付出,每节文章末尾有引用列表~ 写在所有文字的前面:作者在此特别推荐Google排名第一 ...

  7. NIO核心之Channel,Buffer和Selector简介

    在NIO的API中,Channel就是实现非阻塞的组件,而事件分发(Dispatcher)使用的是Selector组件,在传统的I/O流(Stream)是有方向的,而NIO支持双向读写,这样就需要将流 ...

  8. Java NIO_I/O基本概念_Java中的缓冲区(Buffer)_通道(Channel)_网络I/O

    I/O基本概念 缓冲区基础 缓冲区是I/O的基础, 进程使用read(), write()将数据读出/写入从缓冲区中; 当缓冲区写满, 内核向磁盘发出指令, 将缓冲区中数据写入磁盘中(这一步不需要CP ...

  9. elasticSearch6源码分析(6)http和transport模块

    1.http模块概述 The http module allows to expose Elasticsearch APIs over HTTP.The http mechanism is compl ...

  10. java nio 对消息分片_Java NIO:应用

    Java NIO 是一种非阻塞的.面向块而非字节的 IO 方式.虽然 Java 的传统 IO 也进行了一些基于 NIO 的改造,NIO 仍然能够带来许多优势. 面向流的 IO 方便我们一个字节一个字节 ...

最新文章

  1. IE6使用png透明图片的方法
  2. maplet, power set, domain subtraction,
  3. IDEA---SpringBoot同一个项目多端口启动
  4. mysql如何抛出错误信息_如何捕获并重新抛出MySQL中的所有错误
  5. SignalR与自托管Windows服务
  6. MySQL MHA切换失败一例
  7. 权重计算方法三:变异系数法(Coefficient of Variation)
  8. 数据库中常见mdf 、ndf 、ldf 、文件
  9. 526个儿童游戏APP应用音效游戏声音集合音效素材 Kids Game Sound Effects
  10. 如何反编译微信小程序前端,30分钟教你学会
  11. 最大子列和问题(PTA)
  12. MAC如何将[搜狗输入法]设置为默认输入法
  13. 算法题目打卡:Ques20201008
  14. uni-app数据缓存
  15. 惠农网_破译反爬虫_使用代理IP爬取数据(源码)_一蓑烟雨任平生
  16. CSS 定位(position)
  17. 智能制造MES系统框架
  18. 一款基于安卓的观看漫画的app,有漫画排行榜、漫画目录、收藏夹、历史记录、漫画搜索、更新推送服务等
  19. turtle八边形绘制
  20. java 将ftl文件作为模板导出word文档

热门文章

  1. [转]ceph pg peering过程分析
  2. 拟物设计和Angular的实现 - Material Design (持续更新)
  3. 基于GARCH模型的股市研究与危机预警——R语言实现
  4. 淘宝用户行为数据分析详解
  5. Apache doris Datax DorisWriter扩展使用方法
  6. juki贴片机是什么牌子,juki贴片机型号一览表
  7. 【PCIe 实战】SNPS PCIe 开启 SRIS mode
  8. 箱形图、盒须图、盒式图、箱线图
  9. 第十届山东理工大学ACM网络编程擂台赛 重现
  10. 上海,夜访大一女生宿舍,满足。