demo:
@Test
public void testNIO() throws IOException {
// #.准备file
File file = new File("data.txt");
// #.准备文件输出流
FileOutputStream fileOutputStream = new FileOutputStream(file);
// #.文件输出流获取chanel
FileChannel channel = fileOutputStream.getChannel();
// #.设置buffer运行传输的容量
ByteBuffer buffer = ByteBuffer.allocate(1024);
// #.buffer中放入bytes数据形式的内容
System.out.println(Arrays.toString("Java NIO ..".getBytes()));
buffer.put("Java NIO ... ".getBytes());
// buffer.flip() 切换到读取数据的模式
buffer.flip();
// 判断buffer缓冲区中是否还有剩余可读取的
boolean hasRemaining = buffer.hasRemaining();
// 切换另外模式,可重复读
// buffer.rewind();
// 清空缓冲区,但数据内容还在,被"遗忘"状态
// buffer.clear()
// 标记位置
// buffer.mark();
// 重置位置
// buffer.reset();
// #.chanel中写入buffer,缓冲
channel.write(buffer);
// 关闭chanel
channel.close();
// 关闭fileOutStream流
fileOutputStream.close();
}
ByteBuffer:
// #.设置buffer运行传输的容量
ByteBuffer buffer = ByteBuffer.allocate(1024);
// #.buffer中放入bytes数组形式的内容
System.out.println(Arrays.toString("Java NIO ..".getBytes()));
buffer.put("Java NIO ... ".getBytes());
// buffer.flip() 切换到读取数据的模式
buffer.flip();
// 判断buffer缓冲区中是否还有剩余可读取的
boolean hasRemaining = buffer.hasRemaining();
// 切换另外模式,可重复读
buffer.rewind();
// 清空缓冲区,但数据内容还在,被"遗忘"状态
buffer.clear()
// 标记位置
buffer.mark();
// 重置位置
buffer.reset();