1. 通道和缓冲区

    NIO系统的核心在于:通道(Channel)和缓冲区(Buffer)。通道标识打开到IO设备的连接,如果需要使用NIO系统,需要获取用于连接IO设备的通道以及用于容纳数据的缓冲区,然后操作缓冲区对数据进行处理。Channel负责传输、Buffer负责存储

    1. 面向流和面向缓冲区的解释

    共同的特征:只要是IO,那么就是为了完成数据传输的,并且是需要通道的。
    传统IO流:
    如果需要把磁盘文件或者网络文件中你的数据读取到程序中来,需要建立一个传输数据的管道,原来我们传输数据面对的直接就是管道里面一个个字节数据的流动,所以叫做面向流的。
    传统IO的特点:
    单向传输的,假如要将一个目标低点的数据读取到程序中来,需要建立一个管道,这个管道称为输入流。相应的,如果程序中有数据想要写到目标地点去,也得再建立一个通道,这个管道称为输出流,所以传统的IO都是单向的。
    NIO:
    原来的通道可以理解为一个水流,但是NIO不能这样理解,可以把NIO的通道理解为铁路,铁路本身是不能完成运输的,铁路运输必须依赖火车。NIO的通道是为了连接目标地点和源地点,注意通道本身不能传输数据,传输数据必须要有缓冲区。缓冲区可以理解为火车,比如要将程序的写到文件中,那么就可以把数据写到缓冲区,然后缓冲区通过通道进行传输,最后再把数据从缓冲区中拿出来。所以说传统IO是单向的缓冲区是双向的,这种传输方式也叫作面向缓冲区。通道负责连接,缓冲区负责存储数据,通过这个通道将缓冲区进行传送。