NIO学习

NIO基础

non-blocking IO(非阻塞IO)

1、三大组件

1.1、Channel & Buffer

  • Channel:

基本概念:

常见的Channel:

  • Buffer:

基本概念:

常见的Buffer:

1.2、Selector

基本概念:多线程版本的缺点、线程池版本的缺点、Selector版本的服务器设计

2、ByteBuffer

2.1、ByteBuffer正确使用姿势

  • 向buffer中写入数据,例如调用channel.read(buffer)
  • 调用buffer.flip()切换至读模式
  • 从buffer读取数据,例如调用buffer.get()
  • 调用clear()或compact()切换至写模式
  • 重复以上步骤

2.2、ByteBuffer结构

2.3、ByteBuffer常见方法

2.4、Scattering Reads

分散读取

3、文件编程

3.1、FileChannel

FileChannel只能工作在阻塞模式下

  • 获取

  • 读取

  • 写入

  • 关闭

  • 位置

  • 大小

  • 强制写入

3.2、两个Channel传输数据

3.3、Path

JDK7加入了PathPaths

  • Path用来表示文件路径
  • Paths是工具类,用来获取Path实例
1
Path source = Paths.get("Netty学习/netty-demo/data.txt");

3.4、Files(工具类)

检查文件是否存在

创建一级目录

创建多级目录

拷贝文件

移动文件

删除文件

删除目录

遍历目录文件