一、前言

  前面学习了缓冲区的相关知识点,接下来学习通道。

二、通道

  2.1 层次结构图

  对于通道的类层次结构如下图所示。

  iOS培训,Swift培训,苹果开发培训,移动开发培训

  其中,Channel是所有类的父类,其定义了通道的基本操作。从 Channel 接口引申出的其他接口都是面向字节的子接口,包括 WritableByteChannel和ReadableByteChannel。这也意味着通道只能在字节缓冲区上操作

  2.2 通道基础

  Channel接口类只定义了两个方法(isOpen和close),分别表示通道是否打开和关闭通道,具体细节需要子类实现。   

  IO操作可分为File IO和Stream IO,对应通道也有它们是文件( file)通道和套接字( socket)通道 。通道可以有多种方式创建。Socket 通道有可以直接创建新 socket 通道的工厂方法。但File通道不能直接创建,只能通过在一个打开的RandomAccessFile、FileInputStream或FileOutputStream的对象上调用getChannel( )方法来获取。

  通道将数据传输给 ByteBuffer 对象或者从 ByteBuffer 对象获取数据进行传输,通道可以是单向( unidirectional)或者双向的( bidirectional)。一个 channel 类可能实现定义read( )方法的 ReadableByteChannel 接口,而另一个 channel 类也许实现 WritableByteChannel 接口以提供 write( )方法。实现这两种接口其中之一的类都是单向的,只能在一个方向上传输数据。如果一个类同时实现这两个接口,那么它是双向的,可以双向传输数据。如ByteChannel 接口,该接口继承 ReadableByteChannel 和WritableByteChannel 两个接口,可双向传输数据。

  值得注意的是,从 

延伸阅读

学习是年轻人改变自己的最好方式-Java培训,做最负责任的教育,学习改变命运,软件学习,再就业,大学生如何就业,帮大学生找到好工作,lphotoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训学习是年轻人改变自己的最好方式