Java NIO 概述
2020-06-02 本文已影响0人
Chermack
说明:本系列是根据尚硅谷NIO视频(讲师:李贺飞)所作课程笔记
一、简介
Java NIO(New IO Non Blocking IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO由同样的作用和目的,但是使用方式完全不同。NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。NIO 与 IO的主要区别如下表:
Java NIO与IO的主要区别面向流与面向缓冲区的区别
所谓的流,就像现实中的水流。首先建立一根传流的管道,用于传输字节数据。传统的IO是单向的,要么是输入流,要么是输出流。
而NIO采用通道,类似于铁路,本身不能用于传输,而是用于连接需要传输数据的两端。实际传输数据时需要采用缓冲区,类似于火车,在通道之间传递数据,是一个双向的过程。
阻塞IO(Blocking IO)与非阻塞式IO(Non Blocking IO)、选择器(Selectors)
这三个概念与网络编程通信相关,将在后续文章中进行内容的补充。
通道和缓冲区
Java NIO系统的核心在于:通道(channel)和缓冲区(Buffer)。通道表示打开到IO设备(例如:文件、套接字)的连接。若需要使用NIO系统,需要获取用于连接IO设备的通道以及用于容纳数据的缓冲区。然后操作缓冲区,对数据进行处理。
简而言之,Channel负责传输,Buffer负责存储。