NIO:文件通道与网络通道讲解
通道是java.nio的一个创新,既不是一个扩展,也不是一个增强,而是一种全新的IO交流方式,可以提供与IO服务的直接连接, Channel用于在字节缓冲区和通道另一侧的实体(文件或套接字)之间有效的传输数据 类库介绍 顶层接口Channel: 子接口ReadableByteChannel,定义了一个通道可以读的行为 子接口WritableByteChannel,定义了一个通道可以写的行为: 所以,当一个通道实现了ReadableChannel接口,那么该通道就可以读,当一个通道实现了WritableChannel,那么该通道就可以写,如果同时实现了两个接口,则该通道就既可以读,也可以写,是双向的 可以看到ByteChannel引申了可读和可写的接口,这是一种便捷的技巧,后面实现了ByteChannel的类就同时具有了读和写的能力,但是这样确是没有意义的,为什么这样说,对于网络通道来说,双向是正常的,但是对于 文件通道来说,有些就是单向 的,比如FileInputStream获得的文件通道,就只具有可读的特性, 虽然也有write方法,这是因为ByteChannel接口的缘故,但是调用该方法会抛出相应的异常 Scatter和Gather是定义了对缓冲区数组进行操作,这里了解即可,并不常用: 文件通道: 网络通道: 文件通道 从上面的类图可以看出