java NIO 是Java1.4版本开始引入的一个新的io API ,可以替代表标准的Java IO API,NIO 和原来的IO有同样的作用和目的,但是使用方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作.
如果所示:
左边为文件,右边为程序。中间有一个通道对他们进行连接。
举一个比较形象的例子:这个通道就相当于一个铁路,把文件和程序连接了起来。而中间的缓冲区就想当于一个火车。他本身是双向的,可以开往文件,也可以从文件中开回程序。那也就是说 火车在程序中拉了一些人,然后开往文件。到达之后换乘一批人,然后又开往程序,这就是双向。
java NIO的核心在于:通道(Channel)和缓冲区(Buffer)。若要使用NIO系统,需要获取用户连接文件的通道以及用于容纳数据的缓冲区。然后操作缓冲区,对数据进行处理.
简而言之,Channel负责传输,Buffer负责存储。
IO流
而io则是单向的。如果要吧文件中的数据拿到程序中,需要建立一条通道。想把程序中的数据存到文件中也需要建立一条通道。所以我们称他为单向的。然后 io管道里面面对的就是字节的流动,所以传统的io是面向流的。如下图所示: