`

[java][nio]从ByteBuffer中获取基本数据类型

阅读更多


import java.nio.ByteBuffer;
/**
 * 
 * 获取基本数据类型.
 *
 */
public class GetData {

	private static final int BSIZE = 1024;
	
	public static void main(String[] args) {

		ByteBuffer bb = ByteBuffer.allocate(BSIZE);
		
		int i = 0;
		printBuffer(bb);
		
		//ByteBuffer实例中每个字节自动分配为0
		while(i++ < bb.limit()){
			int get = bb.get();
			//System.out.println("get: " + get);//get=0
			
			if(get != 0){
				System.out.println("nonzero");
			}
		}
		System.out.println("i = " + i);//1025
		printBuffer(bb);//position=1024
		System.out.println("--------------");
		bb.rewind();//指针移到数据头
		printBuffer(bb);//position=0
		
		//保存并读取一个字符数组
		bb.asCharBuffer().put("Hello world!!");
		char c ;
		while((c = bb.getChar()) != 0 ){
			System.out.print(c + " ");
		}
		printBuffer(bb);//position=28
		bb.rewind();
		
		//保存并读取一个short
		bb.asShortBuffer().put((short)4583442);
		System.out.println(bb.getShort());
		printBuffer(bb);//position=2
		bb.rewind();
		
		//保存并读取一个int
		bb.asIntBuffer().put(856522114);
		System.out.println(bb.getInt());
		printBuffer(bb);//position=4
		bb.rewind();
		
		//保存并读取一个long
		bb.asLongBuffer().put(1286522114);
		System.out.println(bb.getLong());
		printBuffer(bb);//position=8
		bb.rewind();
		
		//保存并读取一个float
		bb.asFloatBuffer().put(1286522114.5F);
		System.out.println(bb.getFloat());
		printBuffer(bb);//position=4
		bb.rewind();
		
		//保存并读取一个double
		bb.asDoubleBuffer().put(1286522114.88);
		System.out.println(bb.getDouble());
		printBuffer(bb);//position=8
		bb.rewind();

	}
	
	static void printBuffer(ByteBuffer bb){
		System.out.println("limit: " + bb.limit());
		System.out.println("position: " + bb.position());
		System.out.println("capacity: " + bb.capacity());
	}

}


分享到:
评论

相关推荐

    Java NIO学习笔记——ByteBuffer用法

    本文主要关注的是Java NIO中的ByteBuffer,一个关键的数据容器,用于在通道(Channel)和缓冲区(Buffer)之间传输数据。ByteBuffer的用法是Java NIO学习中的核心内容。 首先,我们了解下ByteBuffer的基本概念。...

    java NIO.zip

    Java NIO提供了诸如ByteBuffer、CharBuffer、IntBuffer等类型,对应于不同的数据类型。缓冲区具有读写位置,可以通过flip()、clear()和rewind()等方法来管理缓冲区的状态,从而高效地进行数据读写。 3. **选择器...

    深入理解Apache Mina (6)---- Java Nio ByteBuffer与Mina ByteBuffer的区别

    本篇将深入探讨Java NIO(非阻塞I/O)中的ByteBuffer和Mina库自定义的ByteBuffer之间的区别。 Java NIO的ByteBuffer是Java标准库提供的一个核心类,它是通道(Channel)和缓冲区(Buffer)之间数据传输的主要媒介。它...

    Java NIO Socket基本

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

    java nio 读文件

    Java提供了多种Buffer类,如ByteBuffer、CharBuffer、IntBuffer等,分别对应不同数据类型。每个Buffer都有特定的方法用于写入、读取、清理和翻转数据。 2. 通道(Channel):通道是数据源或目标的抽象,如文件、套接...

    Java NIO 中英文版

    - **缓冲区**:缓冲区是NIO的核心组件,它是一种特殊类型的数组,用于存储各种基本数据类型的数据。Buffer提供了一种高效且可控的方式来读写数据,如get()和put()方法,以及position()、limit()和capacity()属性来...

    java NIO详细教程

    根据数据类型的不同,Java NIO 提供了多种缓冲区: - **ByteBuffer**:用于基本字节数据的缓冲。 - **CharBuffer**:用于字符数据的缓冲。 - **DoubleBuffer** / **FloatBuffer** / **IntBuffer** / **LongBuffer...

    nio.rar_FastCopyFile.java_NIO_UseFloatBuffer.java_java nio_文件锁

    `FastCopyFile.java`可能会展示如何创建FileChannel,从源文件读取数据到一个ByteBuffer,然后将该缓冲区的数据写入目标文件的FileChannel,以此实现高效的文件复制。 接下来,我们来看`UseFloatBuffer.java`。...

    JavaNIO.pdf

    Java NIO中提供了多种类型的缓冲区,如ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer、ShortBuffer、MappedByteBuffer等,每种类型的缓冲区都有其特定的用途和应用场景。 通道...

    java nio 实现socket

    **传统阻塞I/O模型**:在传统的Java IO编程中,当我们调用`read()`或`write()`方法时,如果当前没有数据可读或写,那么这些方法将会阻塞,直到有数据可用或者写操作完成。这种阻塞机制会导致大量的线程被占用,从而...

    java nio入门学习,两个pdf

    本篇文章将深入探讨Java NIO的基本概念、核心组件以及实际应用。 一、Java NIO概述 传统的Java I/O基于流(Stream)和缓冲区(Buffer)的模型,是阻塞式的,即在进行读写操作时会一直等待数据准备好或全部写入完成。而...

    Java NIO系列教程(一) Java NIO 概述

    - **DoubleBuffer**、**FloatBuffer**、**IntBuffer**、**LongBuffer** 和 **ShortBuffer**:分别用于存储不同的基本数据类型。 #### 三、Selectors Selectors是Java NIO中的另一个重要组件,它使得单个线程能够...

    Java NIO详解及源码下载

    缓冲区有多种类型,如`ByteBuffer`、`CharBuffer`、`IntBuffer`等,对应不同的数据类型。 3. **选择器(Selectors)**:选择器允许单个线程检查多个通道的事件,如连接打开、数据到达等,从而提高了系统的并发性能...

Global site tag (gtag.js) - Google Analytics