# public static ByteBuffer wrap(byte[] array)
将array中的数据包装到ByteBuffer中
byte[] array = new byte[1024];
ByteBuffer buffer = ByteBuffer.wrap(array);
等效于
ByteBuffer buffer = ByteBuffer.allocate(1024); //分配一定的空间,1024
在NIO中,数据的读写操作始终是与缓冲区相关联的.读取时信道(SocketChannel)将数据读入缓冲区,写入时首先要将发送的数据按顺序填入缓冲区.缓冲区是定长的,基本上它只是一个列表,它的所有元素都是基本数据类型.ByteBuffer是最常用的缓冲区,它提供了读写其他数据类型的方法,且信道的读写方法只接收ByteBuffer.因此ByteBuffer的用法是有必要牢固掌握的.
1.创建ByteBuffer
1.1 使用allocate()静态方法
ByteBuffer buffer=ByteBuffer.allocate(256);
以上方法将创建一个容量为256字节的ByteBuffer,如果发现创建的缓冲区容量太小,唯一的选择就是重新创建一个大小合适的缓冲区.
1.2 通过包装一个已有的数组来创建
如下,通过包装的方法创建的缓冲区保留了被包装数组内保存的数据.
ByteBuffer buffer=ByteBuffer.wrap(byteArray);
如果要将一个字符串存入ByteBuffer,可以如下操作:
String sendString="你好,服务器. ";
ByteBuffer sendBuffer=ByteBuffer.wrap(sendString.getBytes("UTF-16"));
分享到:
相关推荐
本文主要关注的是Java NIO中的ByteBuffer,一个关键的数据容器,用于在通道(Channel)和缓冲区(Buffer)之间传输数据。ByteBuffer的用法是Java NIO学习中的核心内容。 首先,我们了解下ByteBuffer的基本概念。...
在`CoreJava_day21`的学习笔记中,主要探讨了Java中的NIO(New I/O)包及其关键类和接口,包括`ByteBuffer`、`FileChannel`以及网络编程中常用的`ServerSocket`和`Socket`等。NIO自JDK 1.4引入以来,因其高效性和...
### Java NIO 学习笔记 #### 一、概述 Java NIO (Non-Blocking IO,也称为 Java New IO),是 Java 对传统 IO 模型的一次重大改进,旨在提高程序处理大量并发连接的能力。NIO 的核心组件包括 Channels、Buffers 和 ...
- **NIO的缓冲区**: 用于存储不同数据类型的临时容器,包括ByteBuffer、CharBuffer等。 - **NIO的非阻塞**: 通过设置Channel为非阻塞模式来避免等待IO操作完成。 - **Channel**: 可以理解为数据传输的通道,提供...
它的作用类似于Java NIO中的ByteBuffer,但它提供了更加丰富的功能。ChannelBuffer有readerIndex和writerIndex两个指针,分别用于标记读取位置和写入位置。在进行数据读写时,通过调整这两个指针,可以实现对数据的...
Netty提供了一种高效的数据缓冲区实现——ByteBuf,它比Java的ByteBuffer更易用且性能更好。ByteBuf提供了两个索引,head(读索引)和tail(写索引),用于跟踪已读和未读数据,支持动态扩容和预分配。 3. **...
Netty提供了ByteBuf作为Java NIO ByteBuffer的替代品,提供更高效的内存管理和操作。ByteBuf支持预读和后写,可以避免不必要的内存复制,提高数据传输效率。 此外,Netty的编码解码器(Encoder和Decoder)机制简化...
ByteBuffer buffer = ByteBuffer.allocate(1024); while (true) { buffer.clear(); int r = fcin.read(buffer); if (r == -1) { break; } buffer.flip(); fcout.write(buffer); } } } ``` 在这个例子...
### Mina2.0阅读源码笔记知识点梳理 #### 一、Mina 概述与官方资源 **Mina** 是 Apache 基金会下的一个开源项目,它为开发者提供了一个高性能且易于使用的网络应用框架。Mina 的设计目标是帮助用户轻松地开发出高...
在MINA的学习笔记中,记录的所有API通常会包括以下几个核心部分: 1. **IoSession**: 这是MINA的核心接口,代表了客户端和服务器之间的连接。IoSession提供了读写数据、管理连接状态、获取会话属性等功能。例如,`...
在NIO中,有多种类型的缓冲区,如ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer和LongBuffer,分别对应不同的数据类型。缓冲区具有容量、限制和位置等属性,它们控制着数据的读写。在读取数据时,...
### JAVA上课笔记class_13知识点总结 #### I/O与对象序列化 在Java中,I/O(输入/输出)操作是程序与外部资源(如文件、网络等)交互的基础。其中,`ObjectInputStream`和`ObjectOutputStream`是用于处理对象序列...
在这个"Apache MINA2学习笔记DEMO"中,我们很可能会看到如何使用MINA来创建一个自定义协议的示例。自定义协议通常是为了满足特定应用的需求,例如高效的数据传输、安全性或者特定的编码格式。MINA允许开发者定义自己...
这本书《Netty源码阅读笔记》作者AsiaLee通过一系列的文章深入剖析了Netty的内部机制,旨在帮助读者理解并掌握Netty的核心功能和设计思想。 1. **Netty源码分析系列文章**:这部分内容可能涵盖了Netty的整体架构、...
- Java NIO有多种类型的缓冲区,如ByteBuffer、CharBuffer、ShortBuffer等,对应不同数据类型。缓冲区的操作包括allocate、put、get、flip、clear和rewind等。 5. **选择器(Selector)**: - 选择器允许单线程...
Java NIO提供了多种类型的缓冲区,如ByteBuffer、CharBuffer、IntBuffer等。 3. **选择器(Selector)**:选择器允许单个线程监控多个通道,当某个通道准备就绪时,选择器会通知我们,从而实现多路复用。 接下来,...
在实际开发中,为了优化性能,通常会将顶点数据、颜色信息等存储在ByteBuffer、FloatBuffer等特定类型的Buffer中,利用Buffer提供的方法进行快速读写。例如,putInt和putFloat等方法可以方便地将整型和浮点型数据...
例如,ByteBuffer、CharBuffer等,可以用于存储顶点、颜色等图形数据,方便地传递给OpenGL ES进行渲染。 总之,OpenGL ES是移动设备上的关键图形接口,通过其API和可编程管道特性,开发者可以构建丰富的图形应用...