03. Java NIO Channel 通道
2019独角兽企业重金招聘Python工程师标准>>>
Java NIO Channel通道和流非常相似,主要有以下几点区别:
- 通道可以度也可以写,流一般来说是单向的(只能读或者写)。
- 通达可以异步读写。
- 通道总是基于缓冲区Buffer来读写。
正如上面提到的,我们可以从通道中读取数据,写入到buffer;也可以中buffer内读数据,写入到通道中。下面有个示意图:
Java NIO: Channels read data into Buffers, and Buffers write data into Channels
Channel的实现(Channel Implementations)
下面列出Java NIO中最重要的集中Channel的实现:
- FileChannel
- DatagramChannel
- SocketChannel
- ServerSocketChannel
FileChannel用于文件的数据读写。 DatagramChannel用于UDP的数据读写。 SocketChannel用于TCP的数据读写。 ServerSocketChannel允许我们监听TCP链接请求,每个请求会创建会一个SocketChannel.
Channel的基础示例(Basic Channel Example)
这有一个利用FileChannel读取数据到Buffer的例子:
RandomAccessFile aFile = new RandomAccessFile("data/nio-data.txt", "rw");FileChannel inChannel = aFile.getChannel();ByteBuffer buf = ByteBuffer.allocate(48);int bytesRead = inChannel.read(buf);while (bytesRead != -1) {System.out.println("Read " + bytesRead);buf.flip();while(buf.hasRemaining()){System.out.print((char) buf.get());}buf.clear();bytesRead = inChannel.read(buf);}aFile.close();
注意buf.flip()的调用。首先把数据读取到Buffer中,然后调用flip()方法。接着再把数据读取出来。在后续的章节中我们还会讲解先关知识。
转载于:https://my.oschina.net/gaoguofan/blog/791484
03. Java NIO Channel 通道相关推荐
- 二、Java NIO Channel
一.Java NIO 网络编程 二.Java NIO Channel 三.Java NIO Buffer 四.Java NIO Selector 五.Java NIO 扩展组件 一.Channel 概 ...
- 03 Java NIO allocateDirect()和allocate()区别
03 Java NIO allocateDirect和allocate区别 allocateDirect()和allocate()区别 直接与非直接缓冲区 直接与非直接缓冲区 源码分析 allocat ...
- java nio channel原理_Java NIO 选择器(Selector)与通道(Channel) 原理 | 学步园
NIO底层实现poll, epoll(jdk1.5update 9 和jdk1.6 仅限于 linux 2.6以上 ) Java NIO 选择器(Selector) 知识预备 (linux epo ...
- Java NIO之通道
通道 通道基础 通道打开 通道使用 通道关闭 Scatter/Gather 文件通道 文件通道代码示例 Socket通道 Socket通道代码示例 总结 通道 channel用于字节缓冲区和位于通道另 ...
- Java NIO Channel
Java NIO 通道(Channel) Java NIO的Channel和流(Streams)很相似,但是也有一些区别: Channel是双向的,你可以从Channel中读取,也可以向Channel ...
- Java NIO之Channel(通道)
**Java高级特性增强-NIO 本部分网络上有大量的资源可以参考,在这里做了部分整理并做了部分勘误,感谢前辈的付出,每节文章末尾有引用列表~ 写在所有文字的前面:作者在此特别推荐Google排名第一 ...
- 95-50-050-java.nio.channels-NIO-NIO之Channel(通道)
1.世界 Java NIO之Channel(通道) Buffer(缓冲区)介绍 通常来说NIO中的所有IO都是从 Channel(通道) 开始的. 从通道进行数据读取 :创建一个缓冲区,然后请求通道读 ...
- 我所理解的Java NIO
这两天了解了一下关于NIO方面的知识,网上关于这一块的介绍只是介绍了一下基本用法,没有系统的解释NIO与阻塞.非阻塞.同步.异步之间的联系,导致自己困扰了好久.本篇文章就个人关于NIO的理解进行阐述. ...
- 海纳百川而来的一篇相当全面的Java NIO教程
目录 零.NIO包 一.Java NIO Channel通道 Channel的实现(Channel Implementations) Channel的基础示例(Basic Channel Exampl ...
最新文章
- docker入门及安装
- 再理解RankNet算法
- 牛客 华为机试(我的代码记录)
- 推荐算法炼丹笔记:标签工程
- HSIC简介:一个有意思的判断相关性的思路
- 把自定义url配置到SAP Fiori Launchpad上打开
- linux循环脚本while循环,Shell脚本while、until循环语句简明教程
- CORS(跨域资源共享)
- 查询MySQL字段注释的 5 种方法!
- 索引 | ggplot2基础语法系列推文汇总
- yuki翻译器钩子_【galgame游戏剧情翻译工具】YUKI整合翻译工具下载
- 基于java的智能手表_基于安卓Android智能手环(计步器)APP设计(含录像)
- 新版macbook,PPT导出PDF复制文字乱码问题的解决
- 基于android的家庭财务通 .apk,毕业设计(论文)-基于Android的家庭财务管家的设计与实现.doc...
- 江苏专转本计算机第七章,2013江苏专转本 第七章 无穷级数.ppt
- element表格左对齐方法
- Leedcode编程题18: 四数之和----C++实现
- 三星电子在中国正式召开三星Galaxy Note20系列新品体验发布会~~~~
- 痞子衡嵌入式:MCUXpresso IDE下工程链接文件配置管理与自动生成机制
- 如何主动学习?IT从业者的学习秘籍