在NIO中,缓冲区是一个必不可少的部分,所有的数据读取都是通过缓冲区来实现的。在前面的以流为模型的IO中,缓冲区是可选的,我们可以使用BufferedInputStream、BufferedoutputStream、BufferedReader、BufferedWriter来为数据读写加上缓存,但是我们也可以不加。但是在NIO中,就完全不同了,NIO都是从缓冲区读取数据, 这个缓冲区可能就是一个字节数组,但是在实现上,jvm可能直接将这个字节数组与内存或者硬件相关联,以提供更高效的实现。