[关闭]
@wxf 2018-01-24T02:24:47.000000Z 字数 680 阅读 551

IO相关问题整理

面试系列


NIO简介

NIO可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。

IO NIO
面向流(输入流、输出流) 面向缓冲区(将数据存储到缓冲区中然后利用管道进行数据的传输)
阻塞IO 非阻塞IO
(无) 选择器
  1. allocate() # 获取缓冲区
  2. put() # 存入数据到缓冲区中
  3. get() # 获取缓冲区的数据
  4. flip() # 切换到读取数据的模式
  5. rewind() # 可重复读数据
  6. clear() # 清空缓冲区,可是缓冲区的数据依然存在,但是处于“被遗忘”状态,即位置界限等数据变为了初始状态。

缓冲区的4个核心属性:

  1. capacity:容量,表示缓冲区中最大存储数据的容量。一旦声明不能改变。
  2. limit:界限,表示缓冲区中可以操作数据的大小。(limit后数据不能进行读写)
  3. position:位置,表示缓冲区中正在操作数据的位置。
  4. mark:标记,表示记录当前position的位置。可以通过reset()恢复到mark的位置
  5. # 4者的关系:0 <= mark <= position <= limit <= capacity
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注