`

java nio buffer

    博客分类:
  • java
阅读更多
buffer是固定数量的数据的容器,可以被填充和读取。
一个 buffer 主要由 position,limit,capacity 3个属性

capacity : buffer最大容量,创建时设定,不可修改
 
  position:当前操作(读写)位置

   limit:  第一个不能被读写的元素的位置,即最大可用空间.如果position=limit,继续往buffer
   中存放数据,会抛越界异常

   mark:标记当前位置,可以后续reset返回到当前position
    几个属性关系:     
      0<=mark<=position<=limit<=capacity
 
  clear方法:为写入数据做准备
	   public final Buffer clear() {
		position = 0;
		limit = capacity;
		mark = -1;
		return this;
	   }

  
   flip方法,为读取该buffer做准备
		public final Buffer flip() {
		limit = position;//position是前面已填充数据的位置
		position = 0;
		mark = -1;
		return this;
	    }

   
        rewind方法,从新设置position为0,后续可进行重复操作
	    public final Buffer rewind() {
		position = 0;
		mark = -1;
		return this;
	    }

   
compact(): 将未读取的数据拷贝到 buffer 的头部位。即将当前position数据复制到0出,position+n
出复制到n处


//allocate创建一个buffer,指定capacity,默认limit=capacity,position=0
		CharBuffer buffer = CharBuffer.allocate(10);
		//存入元素
		buffer.put('A').put('B');
		//从新设定buffer的limit为6,则该buffer最多能存储6个元素
		buffer.limit(6);
		buffer.put('C').put('D').put('E');
		//准备读取该buffer中元素
		buffer.flip();
		int count = buffer.limit();//5
		for(int i=0;i<count;i++){
			System.out.println(buffer.get());
		}
		//rewind该buffer,进行第二次读取操作
		buffer.rewind();
		for(int i=0;i<count;i++){
			System.out.println(buffer.get());
		}
		buffer.rewind();
		while(buffer.hasRemaining()/*return position<limit*/){
			System.out.println(buffer.get());
		}
分享到:
评论

相关推荐

    Java NIO Buffer过程详解

    Java NIO Buffer 过程详解 Java NIO Buffer 是 Java NIO 中的一种重要组件,负责数据的存储和传输。缓冲区是数组,用于存储不同数据类型的数据。在与 NIO 通道交互时,Java NIO Buffer plays a crucial role. 基本...

    JavaNIO chm帮助文档

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

    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英文高清原版

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java平台中用于替代标准I/O(BIO)模型的一种新机制。NIO在Java 1.4版本引入,提供了更高效的数据处理和通道通信方式,特别适用于高并发、大数据...

    java NIO 视频教程

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

    java nio 包读取超大数据文件

    ### Java NIO 处理超大数据文件的知识点详解 #### 一、Java NIO简介 Java NIO(New IO)是Java平台上的新输入/输出流API,它提供了与传统IO(即Java IO)不同的数据处理方式。NIO在Java 1.4版本引入,并在后续版本...

    java NIO技巧及原理

    Java NIO(New Input/Output)是Java标准库提供的一种I/O模型,它与传统的 Blocking I/O(IO)相比,提供了更加高效的数据传输方式。在Java NIO中,"新"主要体现在非阻塞和多路复用这两个特性上,这使得NIO更适合于...

    java NIO实例

    3. **Buffer(缓冲区)**:在NIO中,数据读写都是通过缓冲区进行的。缓冲区是一个可以容纳特定类型数据(如字节、字符、整数等)的容器,它提供了对数据的高效访问和管理。 4. **FileChannel**:用于文件的读写,...

    一个java NIO的例子

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java标准库提供的一种替代传统I/O模型的新技术。在传统的Java IO模型中,读写操作是阻塞的,即当调用read或write方法时,线程会等待数据准备好或...

    java nio 读文件

    Java NIO(New IO)是Java 1.4版本引入的一个新模块,它提供了一种不同于标准Java IO API的处理I/O操作的方式。NIO的主要特点是面向缓冲区,非阻塞I/O,以及选择器,这些特性使得NIO在处理大量并发连接时表现出更高...

    Java NIO Socket基本

    缓冲区类型包括ByteBuffer、CharBuffer、IntBuffer、DoubleBuffer等,它们都继承自`java.nio.Buffer`。 3. **选择器(Selector)**:用于监听多个通道的事件(如连接就绪、数据到达等),当某个通道准备好进行读写...

    java NIO详细教程

    Java NIO的核心组件包括Channel(通道)、Buffer(缓冲区)和Selector(选择器)。 - **Channel**:通道用于连接源和目的地,支持数据的读写操作。与传统的流不同,通道支持双向通信,并且可以通过非阻塞的方式进行...

    java nio入门学习,两个pdf

    Java NIO定义了多个Buffer类,如ByteBuffer、CharBuffer、IntBuffer等,每个Buffer都有容量、位置、限制等属性,可以进行读写操作。 3. **选择器(Selectors)**:选择器用于监控多个通道的状态,当某个通道准备就绪...

Global site tag (gtag.js) - Google Analytics