二、Nio之Channel
1、Java NIO 的通道类似流,但又有些不同:
既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。
通道可以异步地读写。
通道中的数据总是要先读到一个 Buffer,或者总是要从一个 Buffer 中写入。
2、Channel 的实现
这些是 Java NIO 中最重要的通道的实现:
FileChannel
DatagramChannel
SocketChannel
ServerSocketChannel
FileChannel 从文件中读写数据。
DatagramChannel 能通过 UDP 读写网络中的数据。
SocketChannel 能通过 TCP 读写网络中的数据。
ServerSocketChannel 可以监听新进来的 TCP 连接,像 Web 服务器那样。对每一个新进来的连接都会创建一个SocketChannel。
3、基本Channel示例:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
/**
* nio channel 读取数据到buffer示例 * Created by 321695 on 2016/11/8. */ public class FileChannelTest { public static void main(String[] args) { RandomAccessFile randomAccessFile = null; try { //获取文件传输通道实例 //创建一个容量为48字节的buffer //读取数据到buffer中 while (bytesRead != -1) { System.out.println("Read" + bytesRead); //反转buffer //若buffer中还有元素,打印出来 //清空buffer //继续处理未完成数据 } //文件操作对象关闭 |
二、Nio之Channel相关推荐
- Java NIO之Channel(通道)
**Java高级特性增强-NIO 本部分网络上有大量的资源可以参考,在这里做了部分整理并做了部分勘误,感谢前辈的付出,每节文章末尾有引用列表~ 写在所有文字的前面:作者在此特别推荐Google排名第一 ...
- NIO 之 Channel
可参考之前写过的文章:NIO 之 Channel实现原理 概述 通道( Channel)是 java.nio 的主要创新点.它们既不是一个扩展也不是一项增强,而是全新.极好的 Java I/O 示例, ...
- Netty导学之NIO,Channel、Buffer、Selector详解
介绍 NIO可翻译为Non-Blocking IO非阻塞IO,也可以称其为New IO 因为其是JDK1.4新出现的. java中的流要么是输入流,要么是输出流,不可能都是,它面向流编程.而在NIO中 ...
- Java NIO 之Channel
定义 用于源节点和目标节点之间的连接.nio中负责缓冲区中数据传输,Channel本地并不存储数据,而是配合缓冲区进行数据传输.你可以把它理解成io中的流. 结构(java.nio.channels. ...
- JAVA NIO - Buffer Channel
2019独角兽企业重金招聘Python工程师标准>>> Buffer和Channel是NIO中的基本对象,凡是涉及到I/O的操作都都会用到Buffer和Channel. Channe ...
- 深入浅出NIO之Channel、Buffer
2019独角兽企业重金招聘Python工程师标准>>> 前言 Java NIO 由以下几个核心部分组成: 1 .Buffer 2.Channel 3.Selector 传统的IO操作 ...
- 【Netty】NIO 通道 ( Channel ) 组件
文章目录 I . 通道 ( Channel ) 概念简介 II . 通道 ( Channel ) 常用类 III . 常用的 通道 ( Channel ) 之 套接字通道 ( SocketChanne ...
- NIO 之 Channel实现原理
相关文章 IO.NIO.AIO 内部原理分析 NIO 之 Selector实现原理 NIO 之 ByteBuffer实现原理 NIO概述 Java NIO 由以下几个核心部分组成: Channels ...
- 小师妹学JavaIO之:NIO中Channel的妙用
文章目录 简介 Channel的分类 FileChannel Selector和Channel DatagramChannel SocketChannel ServerSocketChannel As ...
最新文章
- 开发者,只有被裁,没有退休
- VC 利用DLL共享区间在进程间共享数据及进程间广播消息
- 2019年1月29日
- IPhone 设备状态、闪光灯状态
- knime如何连接mysql_knime怎么连接MySQL?
- 通才和专家:如何选择
- 腾讯宣布五年5000亿投入计划,发力新基建(2020年5月)
- android button 图片不缩放,ImageButton如何让图片按比例缩放不被拉伸
- 在主函数中输入10个等长的字符串。用另一函数对他们排序
- 计算机组成原理笔记(一):概述
- 去掉flash player自带的fff新推荐广告插件
- c语言中的各种“零”
- 奇迹网站可视化排行榜]_外观可视化奇迹
- 2020-10-23 集合+序列化+递归+多线程+泛型+枚举+单例+反射小记
- python画k线_python画k线,python绘制动态k线及均线
- 爬取百度 《一人之下》 贴吧
- Integer装箱拆箱、参数传递
- Maven手工安装jar包到本地仓库
- linux ntp攻击python脚本,(转)如何发现 NTP 放大攻击漏洞
- 机器学习算法的效果评估和优化方法
热门文章
- Facial Expression Recognition based on a multi-task global-local network--论文笔记
- 从校招时间谈大学求职准备
- Tensorflow中的各种梯度处理gradient
- 戴尔电脑怎么录屏?这6个方法教你轻松录屏
- 安利几款win10小工具
- Matlab动态作图——animatedline函数
- 竞品分析:小宇宙APP——如何在播客领域站住脚?
- php微信公众号怎么开发_PHP对接微信公众平台消息接口开发流程详解及实例
- 从easyui页面导出excel
- BS EN 438-6装饰用板材外部用压实层压板材的分类和规范