`

java.nio.buffer

 
阅读更多

缓冲区分为直接缓冲区和间接缓冲区,直接缓冲区的创建成本要高于间接缓冲区,但同时它也会提供更快的I/O访问速度。所以直接缓冲区适合那种长期存在的缓冲区,而间接缓冲区则适合于生命周期较短的。还有,要注意,只有ByteBuffer可以创建直接缓冲区。

AD:

 

capacity(): 表明缓冲区的容量大小, 一旦确定了大小, 将不能再改变; 
limit(): 告诉您到目前为止已经往缓冲区填了多少字节,或者用#limit(int)来改变这个限制; 
position(): 告诉您当前的位置,以执行下一个读/写操作; 
mark(): 为了稍后用 reset() 进行重新设置而记住某个位置; 
flip(): 交换限制指针和位置指针,然后将位置置为 0,并废弃已经做的mark标记。

缓冲区的基本操作是读#get()和写#put()。

缓冲区类型:

NIO具有7种特定的 Buffer 类型,每种类型对应着一个基本数据类型(除了 boolean)

  1. ByteBuffer //字节缓冲区 
  2. CharBuffer //字符缓冲区 
  3. DoubleBuffer //double 缓冲区 
  4. FloatBuffer //float 缓冲区 
  5. IntBuffer //int 缓冲区 
  6. LongBuffer //long 缓冲区 
  7. ShortBuffer //short 缓冲区 

缓冲区分为直接缓冲区和间接缓冲区,直接缓冲区的创建成本要高于间接缓冲区,但同时它也会提供更快的I/O访问速度。所以直接缓冲区适合那种长期存在的缓冲区,而间接缓冲区则适合于生命周期较短的。还有,要注意,只有ByteBuffer可以创建直接缓冲区。

缓冲区的几个内部状态的改变:

容量(capacity),缓冲区大小

限制(limit),第一个不应被读取或写入的字节的索引,总是小于容量。

位置(position),下一个被读取或写入的字节的索引,总是小于限制。

0 <= position <= limit <= capacity

1. clear()方法:设置limit为capacity,position为0,并丢弃mark。

2. filp()方法:设置limit为当前position,然后设置position为0,并丢弃mark。

3. rewind()方法:保持limit不变,设置position为0,并丢弃mark。

分享到:
评论

相关推荐

    nio:Clojure对java.nio的支持

    此外,还有三个函数buffer-seq,buffer-nth和buffer-to-array,旨在使将java.nio类集成到Clojure中更加容易。 希望通过将它们的功能滚动到clojure.core中,它们将变得过时。 要使其他功能与ByteBuffers一起使用,还...

    Java NIO 英文文字版

    The NIO package includes many things that have been missing from previous editions of Java that are critical to writing high-performance, large-scale applications: improvements in the areas of buffer ...

    Java NIO实战开发多人聊天室

    12-Java NIO-Buffer-概述.mp4 13-Java NIO-Buffer-基本使用.mp4 14-Java NIO-Buffer-三个属性和类型.mp4 17-Java NIO-Buffer-缓冲区分片.mp4 18-Java NIO-Buffer-只读缓冲区.mp4 19-Java NIO-Buffer-直接缓冲区.mp4 ...

    java网络编程NIO视频教程

    01-Java NIO-课程简介.mp4 02-Java NIO-概述.mp4 03-Java NIO-Channel-概述.mp4 04-Java NIO-Channel-FileChannel(介绍和示例).mp4 05-Java NIO-Channel-FileChannel详解(一)....15-Java NIO-Buffer-分配和读写数据.mp4

    JavaNIO chm帮助文档

    Java NIO系列教程(三) Buffer Java NIO系列教程(四) Scatter/Gather Java NIO系列教程(五) 通道之间的数据传输 Java NIO系列教程(六) Selector Java NIO系列教程(七) FileChannel Java NIO系列教程(八) ...

    nio.rar_FastCopyFile.java_NIO_UseFloatBuffer.java_java nio_文件锁

    Java NIO 源码适合初学者,里面包括通道和Buffer的基本适用,以及文件锁,和内存文件映射等等

    尚硅谷Java视频_NIO 视频教程

    尚硅谷_NIO_缓冲区(Buffer)的数据存取 ·03. 尚硅谷_NIO_直接缓冲区与非直接缓冲区 ·04. 尚硅谷_NIO_通道(Channel)的原理与获取 ·05. 尚硅谷_NIO_通道的数据传输与内存映射文件 ·06. 尚硅谷_NIO_分散读取与聚集...

    java8源码-nio:java8nio使用的总结

    NIO_缓冲区(Buffer)的数据存取 缓冲区(Buffer):在 Java NIO 中负责数据的存取。缓冲区就是数组。用于存储不同数据类型的数据 4. NIO_直接缓冲区与非直接缓冲区 非直接缓冲区:通过 allocate() 方法分配缓冲区,将...

    NIO实现多用户聊天demo,通过demo深入理解NIO三大组件:buffer、channel、selector

    目录运行效果截图:源代码:Server端:Client端:使用时注意:(持续更新) 运行效果截图: 启动server端: 依次启动client1、client2、client3并输入相应昵称: 三个clent端各自说一句话(红...import java.nio.c

    java nio中文版

    java NIO是 java New IO 的简称,在 jdk1.4 里提供的新 api 。 Sun 官方标榜的特性如下: – 为所有的原始类型提供 (Buffer) 缓存支持。 – 字符集编码解码解决方案。 – Channel :一个新的原始 I/O 抽象。 – 支持...

    Java IO, NIO and NIO.2(Apress,2015)

    Java I/O, NIO, and NIO.2 is a power-packed book that accelerates your mastery of Java's various I/O APIs. In this book, you'll learn about classic I/O APIs (File, RandomAccessFile, the stream classes ...

    java NIO 视频教程

    标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。 Java NIO: Non-blocking IO(非阻塞IO) Java NIO...

    NIO概述

    2.2 NIO概述 NIO NIO ==&gt; New IO(新IO), Non-Block IO(非阻塞IO) NIO非阻塞IO,运行当前程序在处理IO事务时,不会影响其他程序的运行,可以在不使用多线程的情况下,满足IO操作要求。...java.nio.Buffer Buffe

    Java+NIO+中文版.pdf

    java nio作者倾力所写的简单易懂的NIO学习指南,让你顺利拿下NIO开发,包括了NIO中的Buffer,Channel,Selector的介绍,理论&代码都有,是你学习NIO的不二法宝~

    Java NIO Buffer过程详解

    主要介绍了Java NIO Buffer过程详解,缓冲区在java nio中负责数据的存储。缓冲区就是数组。用于存储不同数据类型的数据。,需要的朋友可以参考下

    浅谈java中nio的使用方式

    NIO其核心概念包括Channel,Selector,SelectionKey,Buffer.

    Java性能优化之使用NIO提升性能(Buffer和Channel)

    NIO是NewI/O的简称,具有以下特性:为所有的原始类型提供(Buffer)缓存支持;使用java.nio.charset.Charset作为字符集编码解码解决方案;增加通道(channel)对象,作为新的原始I/O抽象;支持锁和内存映射文件的...

    Java-NIO-Programming-Cookbook(含源码)

    Java-NIO-Programming-Cookbook英文版和配套源代码。有一个使用DirectByteBuffer和Non-Direct Buffer文件读取速度的对比实验程序和测试结果。

    Java NIO 电子书

    Java NIO.pdf Dedication ............................................................................................................................. 1 Preface ..........................................

Global site tag (gtag.js) - Google Analytics