NIO的通道类似于流,但有些区别如下:

•通道可以同时进行读写,而流只能读或者只能写

•通道可以实现异步读写数据

•通道可以从缓冲区(Buffer)读数据,也可以写数据到缓冲区

BIO 中的 stream 是单向的,例如 FileInputStream 对象只能进行读取数据的操作,而 NIO 中的通道(Channel)是双向的,可以读操作,也可以写操作。

Channel在NIO中是一个接口

public interface Channel extends Closeable{}

常用的 Channel 类有:FileChannel、DatagramChannel、ServerSocketChannel 和

SocketChannel。【ServerSocketChanne 类似

ServerSocket , SocketChannel 类似 Socket】

FileChannel 用于文件的数据读写,

DatagramChannel 用于 UDP 的数据读写,

ServerSocketChannel 和 SocketChannel 用于 TCP

的数据读写。

※ServerSocketChannel的用处是:当有客户端像服务器发送信息的时候,ServerSocketChannel都会给客户端分配一个SocketChannel--实际用的是ServerSocketChannelImpl和SocketChannelImpl

※FileChannel主要用来对本地文件进行 IO 操作,常见的方法有:

1) public int read(ByteBuffer dst) ,从通道读取数据并放到缓冲区中

2) public int write(ByteBuffer src) ,把缓冲区的数据写到通道中

3) public long transferFrom(ReadableByteChannel src, long position, long count),从目标通道

中复制数据到当前通道

4) public long transferTo(long position, long count, WritableByteChannel target),把数据从当

前通道复制给目标通道

NIO中的Channel详解相关推荐

  1. netty系列之:netty中的Channel详解

    文章目录 简介 Channel详解 异步IO和ChannelFuture Channel的层级结构 释放资源 事件处理 总结 简介 Channel是连接ByteBuf和Event的桥梁,netty中的 ...

  2. Netty网络编程(三):Channel详解

    文章目录 简介 Channel详解 异步IO和ChannelFuture Channel的层级结构 释放资源 事件处理 总结 简介 Channel是连接ByteBuf和Event的桥梁,netty中的 ...

  3. Go Channel 详解

    原文链接:Go Channel 详解 Channel类型 Channel类型的定义格式如下: ChannelType = ( "chan" | "chan" & ...

  4. FLV文件中VideoPacket的详解

    FLV文件中VideoPacket的详解 众所周知,FLV文件体主要有三种Tag组成:AUDIODATA.VIDEODATA和SCRIPTDATA,其中SCRIPTDATA中包含了MetaData,通 ...

  5. ALSA声卡驱动中的DAPM详解之四:在驱动程序中初始化并注册widget和route

    前几篇文章我们从dapm的数据结构入手,了解了代表音频控件的widget,代表连接路径的route以及用于连接两个widget的path.之前都是一些概念的讲解以及对数据结构中各个字段的说明,从本章开 ...

  6. Asp.net中GridView使用详解(引)【转】

    Asp.net中GridView使用详解(引) GridView无代码分页排序 GridView选中,编辑,取消,删除 GridView正反双向排序 GridView和下拉菜单DropDownList ...

  7. Linux中iptraf命令详解(IP局域网监控工具)

    2019独角兽企业重金招聘Python工程师标准>>> Linux中iptraf命令详解(IP局域网监控工具) 发布时间:2017-12-27 20:46:03   作者:佚名    ...

  8. ArcGIS Engine中的Symbols详解

    转自原文 ArcGIS Engine中的Symbols详解 本文由本人翻译ESRI官方帮助文档.尊重劳动成果,转载请注明来源. Symbols ArcObjects用了三种类型的Symbol(符号样式 ...

  9. js路由在php上面使用,React中路由使用详解

    这次给大家带来React中路由使用详解,React中路由使用的注意事项有哪些,下面就是实战案例,一起来看一下. 路由 通过 URL 映射到对应的功能实现,React 的路由使用要先引入 react-r ...

最新文章

  1. 怎样用cocos2d-x做一个基于地图块的游戏(Part One)
  2. 数据挖掘十大经典算法之——K-Means 算法
  3. 领域驱动和MVVM应用于UWP开发的一些思考
  4. stm32设置内部上拉电阻_不知道STM32的GPIO8种模式如何设置?-------看这里
  5. Linux/unix 查看端口占用
  6. 深度学习数据集制作工作_创建我的第一个深度学习+数据科学工作站
  7. 网络请求中常见的加密机制和加密算法理解
  8. Contours 等高线图
  9. 标准时间校对_颜色校对很难?瑞锌五金工具对色灯箱强势来袭
  10. 修改Android中strings.xml文件, 动态改变数据
  11. Shiro 综合实例
  12. 精密电阻阻值表丝印大全
  13. 锐捷交换机端口设置trunk模式并指定允许的vlan数据包通过
  14. linux用for循环写九九乘法表,写一个方法,用一个for循环打印九九乘法表
  15. Python语言程序设计基础_期末作品设计——收银软件(2020-2 B)_答案_通识教育必修课程_上海师范大学
  16. 2023年天津天狮学院专升本报名考试的安排
  17. Apereo CAS 5.0.3.1安装配置
  18. NS3运行Reno,BBR,CUBIC等拥塞控制算法
  19. 快过年了,该买回家的票了,自动抢票之 12306 抢票篇
  20. Java 获取当前服务器公网IP

热门文章

  1. sql两数相除保留两位小数_sql 除法运算 保留两位小数
  2. 手机充电器的参数解释
  3. iOS开发之系统发短信功能详解
  4. java的rsa加密_Java实现RSA加密算法
  5. 【web前端期末大作业】制作一个HTML+CSS保护动物宠物网页
  6. 计算机网络实验一——应用协议与数据包分析
  7. mybatis <if 大于小于 条件写法> gt gte lt lte
  8. 前端中dist文件的含义
  9. 绝对定位指令DRVA和相对定位指令DRVI
  10. 常见HTTP状态码汇总