BIO:Blocking I/O
同步阻塞I/O模式,数据的读取写入必须阻塞在一个线程内等待其完成。(一请求一应答)
NIO:New I/O
同步非阻塞的I/O模型,对应nio包,提供了Channel(通道) , Selector(选择器),Buffer(缓冲区)等对象。
BIO与NIO区别:
1、BIO是阻塞的,NIO是非阻塞的
2、BIO是面向流的,NIO是面向缓冲区(buffer)的
3、NIO通过Channel进行读写,且是双向的,Channel和Buffer交互,可以异步读写;BIO是流的读写,且是单向的
4、NIO有Selector,Selector用于使用单个线程处理多个Channel
NIO读数据和写数据方式
NIO中的所有IO都是从 Channel(通道) 开始的。
从通道进行数据读取 :创建一个缓冲区,然后请求通道读取数据。
从通道进行数据写入 :创建一个缓冲区,填充数据,并要求通道写入数据。
字节流对应的类应该是InputStream和OutputStream,而在我们实际开发中,我们应该根据不同的媒介类型选用相应的子类来处理。
字符流对应的类应该是Reader和Writer。