1.概述
java . io中最为核心的一个概念是流(Stream) ,面向流的编程。Java中,-个流要么是输入流,要么是输出流,不可能同时既是输入流又是输出流。
java. nio中拥有3个核心概念: Selector, Channel与Buffer. 在java.nio中,我们是面向块(block) 或是缓冲区(buffer) 编程的。Buffer本身就是一块内存, 底层实现上,它实际上是个数组。数据的读、写都是通过Buffer来实现的。
除了数组之外,Buffer还提供了对于数据的结构化访问方式,并且可以追踪到系统的读写过程。
Java中的8种原生数据类型都有各自对应的Buffer类型,如IntBuffer, LongBuffer , ByteBuffer 及CharBuffer等等。
Channel指的是可以向其写入数据或是从中读取数据的对象,它类似于java . io中的Stream。所有数据的读写都是通过Buffer来进行的,永远不会出现直接向Channe1写入数据的情况, 或是直接从Channe1读取数据的情况。
与Stream不同的是,Channe1是双向的, - 个流只可能是InputStream或是0ut