这一章学习nio中的Buffer使用。
1、Buffer概述
Buffer可以认为是在内存中划分了块,这些区间允许往里面写数据和从里面读数据。这些内存块被包装
成了NIO Buffer对象,方便使用。
2、Buffer基本使用
使用Buffer进行数据读写,需要如下四步:
1、往Buffer中写入数据:通常使用Channel来完成。
2、调用 buffer.flip()方法:这个方法将Buffer从写模式(writing)转换为读模式(reading)。
3、
从Buffer中读取数据。
4、调用 buffer.clear()
或者 buffer.compact()方法:clear方法清空整个Buffer,compact
方法将Buffer中未读取的内容安排至Buffer的开始位置。
3、Buffer Capacity, Position and Limit
capacity,position and limit是Buffer三个重要的属性。先看图:
Buffer capacity, position and limit in write and read mode.
描述如下:
- capacity:Buffer的容量,Buffer可以写入数据的容量大小,已Byte为单位。
- position:指示当前数据读写的位置,主要是在于高速Buffer下个要读或者写的位置是什么。
- limit:写入数据时与capacity概念一样,表示可以写入多少数据;读数据代表可读多少数据。
4、Buffer 的类型
- ByteBuffer
- MappedByteBuffer
- CharBuffer
- DoubleBuffer
- FloatBuffer
- IntBuffer
- LongBuffer
- ShortBuffer
可将各种数据类型对Buffer读写。其中,MappedByteBuffer比较特殊,后面再提。
4、Buffer 的分配、写数据、flip、读数据
空间分配:每种Buffer的类型都有allocate()方法,用来分配初始Buffer的大小。 写数据:两种方式,一是从Channel写入Buffer;二是通过代码put方法放入数据。
flip:flip方法,表示buffer已经写完数据了,可以进行读了。
读数据:两种方式,一是将Buffer的数据写入Channel中;二是通过get方法获取数据。
5、rewind、clear与compact、mark与reset
rewind方法:将position属性重置为0,可以重读Buffer中的内容。
clear与compact:clear清空整个Buffer,数据被清除,position被设置为0,从读模式转换为写模式;
compact清空已读的数据,将未读的数据放置在前面,position被设置为未读的数据位置。
mark与reset:mark标记已读的位置,当想回到这个标记的时候,调用reset方法,将会回来。
相关推荐
Nio学习笔记
java NIO的基本知识点学习笔记,不包含具体代码
javaNIO学习笔记(csdn)————程序
文章同步:http://blog.csdn.net/wgyscsf/article/details/50953318
java学习笔记1(java io/nio)设计模式
NULL 博文链接:https://zheng12tian.iteye.com/blog/1094811
IO 是主存和外部设备 ( 硬盘、终端和网络等 ) 拷贝数据的过程。 IO 是操作系统的底层功能实现,底层通过 I/O 指令进行完成。 所有语言运行时系统提供执行 I/O 较高级别的工具。 (c 的 printf scanf,java 的面向对象...
JAVA NIO学习资料JAVA NIO学习资料
可以动态演示nio中buffer的相关操作,直观看到各种重要数据的变化,方便大家更好的理解nio的buffer模型
主要介绍一些关于NIO 的基础知识,有浅到深
NIO笔记.doc
java_nio学习文档
Contents: 1 核心概念以及基本读写 2 缓冲区的实现机制 3 连网与异步IO 4 分散和聚集IO 5 文件锁定
尚硅谷_NIO_缓冲区(Buffer)的数据存取 ·03. 尚硅谷_NIO_直接缓冲区与非直接缓冲区 ·04. 尚硅谷_NIO_通道(Channel)的原理与获取 ·05. 尚硅谷_NIO_通道的数据传输与内存映射文件 ·06. 尚硅谷_NIO_分散读取与聚集...
NULL 博文链接:https://copperfield.iteye.com/blog/1454238
Java NIO系列教程(三) Buffer Java NIO系列教程(四) Scatter/Gather Java NIO系列教程(五) 通道之间的数据传输 Java NIO系列教程(六) Selector Java NIO系列教程(七) FileChannel Java NIO系列教程(八) ...
Java NIO学习资料+代码.zip
NIO是NewI/O的简称,具有以下特性:为所有的原始类型提供(Buffer)缓存支持;使用java.nio.charset.Charset作为字符集编码解码解决方案;增加通道(channel)对象,作为新的原始I/O抽象;支持锁和内存映射文件的...
回味Java基础之NIO!!!