Java NIO 简介
NIO(New IO)是 Java 4 引入的新 IO API,提供了非阻塞 IO 和更高效的 IO 操作。理解 NIO 的基本概念是进行高性能 IO 开发的基础。本章将简要介绍 Java NIO 的核心概念。
Buffer 与 Channel 概念
Buffer(缓冲区)
**Buffer**是 NIO 中用于存储数据的容器。
核心 Buffer 类型:
ByteBuffer:字节缓冲区CharBuffer:字符缓冲区IntBuffer:整数缓冲区DoubleBuffer:双精度缓冲区
Buffer 的状态:
- capacity:容量,缓冲区大小
- position:位置,下一个读写位置
- limit:限制,可读写数据的边界
- mark:标记,用于 reset
import java.nio.ByteBuffer;
// 创建缓冲区
ByteBuffer buffer = ByteBuffer.allocate(1024); // 分配 1024 字节
// 写入数据
buffer.put("Hello".getBytes());
// 切换到读模式
buffer.flip();
// 读取数据
byte[] data = new byte[buffer.remaining()];
buffer.get(data);
Channel(通道)
**Channel**是 NIO 中用于 IO 操作的通道。
核心 Channel 类型:
FileChannel:文件通道SocketChannel:TCP 通道ServerSocketChannel:TCP 服务器通道DatagramChannel:UDP 通道
特点:
- 双向:可以读写
- 异步:支持非阻塞模式
- 高效:直接与操作系统交互
import java.nio.channels.FileChannel;
import java.nio.file.*;
// 打开文件通道
FileChannel channel = FileChannel.open(Paths.get("file.txt"),
StandardOpenOption.READ, StandardOpenOption.WRITE);