2019独角兽企业重金招聘Python工程师标准>>>

Buffer和Channel是NIO中的基本对象,凡是涉及到I/O的操作都都会用到Buffer和Channel.

Channel就像IO中的Stream所有的字节从这里写到Buffer中或者从Buffer中读到Channel中。

Buffer是NIO的容器,是NIO和IO的重要区别之一,在NIO中所有的数据在Buffer中处理,而在IO中则是在Stream中来处理.Buffer是本质上是数组,但是不一定是字节数组,也可能是其它类型数组。Buffer不限于数组,更重要的是它提供了一种数据存储结构并且保持了系统读写处理的记录。

查看JAVA API,Buffer的种类主要有。

ByteBuffer,MappedByteBuffer, CharBuffer, DoubleBuffer,FloatBuffer, IntBuffer, LongBuffer, ShortBuffer.可以看出就是java中基本类对应的一些Buffer类。每一个类中都定义了对应的基本类数组私有变量hb.

Channel 是双向的,而在IO中Stream却是单向的,双向的Channel和操作系统的Stream是对应的,操作系统级别的stream就是双向的。

具体的示例程序网上很多就不写了,有几个地方需要注意的,在这里说一下。

Buffer.clear Clears this buffer. The position is set to zero, the limit is set to the capacity, and the mark is discarded.在向buffer中写入前注意清空Buffer,否则会产生无效数据。

Buffer.flip Flips this buffer. The limit is set to the current position and then the position is set to zero. If the mark is defined then it is discarded.

另外注意Channel和Stream在打开之后不要忘了关闭,最好是放在finally语句中将它们close

转载于:https://my.oschina.net/u/138995/blog/193829

JAVA NIO - Buffer Channel相关推荐

  1. Java NIO之Channel(通道)

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

  2. java nio.Buffer的属性变化

    java nio.Buffer的属性变化 认识Buffer Channel 提供从文件.网络读取数据的渠道,但是读取或写入的数据都必须经由 Buffer.Buffer,实际上是一个连续数组. 常用的 ...

  3. Java NIO 之Channel

    定义 用于源节点和目标节点之间的连接.nio中负责缓冲区中数据传输,Channel本地并不存储数据,而是配合缓冲区进行数据传输.你可以把它理解成io中的流. 结构(java.nio.channels. ...

  4. java.nio.Buffer flip()方法

    碰到java.nio.Buffer flip()方法,不明白是干什么用的,于是就赶快查看中文API,API上面翻译的是:"反转此缓冲区.首先对当前位置设置限制,然后将该位置设置为零.如果已定 ...

  5. java.nio.Buffer 中的 flip()方法

    在Java NIO编程中,对缓冲区操作常常需要使用  java.nio.Buffer中的 flip()方法. Buffer 中的 flip() 方法涉及到 Buffer 中的capacity.posi ...

  6. 关于java.nio.Buffer的API

    Buffer操作是Java NIO应用开发的基础,以下介绍Buffer操作的相关参数以及操作说明. 浏览全文 转载于:https://www.cnblogs.com/ungshow/archive/2 ...

  7. Java NIO ———— Buffer 缓冲区详解

    引言 缓冲区是一个用于特定基本类型的容器.由java.nio 包定义,所有缓冲区都是 Buffer 抽象类的子类. Java NIO 中的 Buffer ,主要用于与NIO 通道进行交互.数据从通道存 ...

  8. Java NIO Channel

    Java NIO 通道(Channel) Java NIO的Channel和流(Streams)很相似,但是也有一些区别: Channel是双向的,你可以从Channel中读取,也可以向Channel ...

  9. Java NIO学习篇之通道Channel详解

    定义: Channel:通道,运输的介质,可以大致比喻成铁路的铁轨,连接着两个车站,而channel用于打开与IO设备的连接,比如磁盘,套接字等. 通道使用完需要关闭. 与传统IO的Stream比较: ...

最新文章

  1. SAP 系统参数设置 RZ10 RZ11
  2. JDBC操作数据库的基本流程
  3. 中国自研数据库拿下世界第一,背后这十年都经历了什么?
  4. 前端学习(3092):vue+element今日头条管理-发布更新
  5. Oracle 存储过程错误之PLS-00201: 必须声明标识符
  6. matplotlib 子图超过4个_Matplotlib从入门到精通
  7. django-动态的读取静态目录路径
  8. mysql使用了索引还是慢,`MySQL GROUP BY使用索引时速度较慢
  9. c语言vs2013下载官方下载,Microsoft Visual C++2013运行库下载
  10. 局域网内台式机使用笔记本作代理服务器上网
  11. UnicodeEncodeError: ‘charmap‘ codec can‘t encode characters in position 0-1: character maps to <unde
  12. 简单的集装箱号码识别
  13. 文言文编程背后-语言的本质
  14. 相位展开(phase unwrapping)
  15. [日推荐] 『KORJO母爱小空间』妈妈带宝宝出门再也不用愁啦!
  16. 【洛谷2791】 幼儿园篮球题 第二类斯特林数+NTT
  17. 蚁群算法解决 TSP 问题
  18. 使用FMDB进行数据库操作
  19. hall 状态下,禁用指纹解锁
  20. 计算机格式化系统,Win7电脑怎么进行格式化?

热门文章

  1. NRF52832与W25Q80通信
  2. SQLServer之创建分布式事务
  3. Java 链接MySQL数据库时报的connect和denied错解决方法
  4. 【转载】浅谈缺陷截图处理
  5. 【白话设计模式二】外观模式(Facade)
  6. perl 命令行备注
  7. LAMP(httpd 2.4.1 + mysql-5.5.19 + php-5.3.10)编译安装
  8. cron计划任务使用
  9. SQL2008修改并保存表结构时报错的解决(阻止保存要求重新创建表的更改)
  10. 澳洲留学征文活动获奖情况公布