NIO中的Channel详解

NIO的通道类似于流,但有些区别如下:

•通道可以同时进行读写,而流只能读或者只能写

•通道可以实现异步读写数据

•通道可以从缓冲区(Buffer)读数据,也可以写数据到缓冲区

BIO 中的 stream 是单向的,例如 FileInputStream 对象只能进行读取数据的操作,而 NIO 中的通道(Channel)是双向的,可以读操作,也可以写操作。

Channel在NIO中是一个接口

public interface Channel extends Closeable{}

常用的 Channel 类有:FileChannel、DatagramChannel、ServerSocketChannel 和

SocketChannel。【ServerSocketChanne 类似

ServerSocket , SocketChannel 类似 Socket】

FileChannel 用于文件的数据读写,

DatagramChannel 用于 UDP 的数据读写,

ServerSocketChannel 和 SocketChannel 用于 TCP

的数据读写。

※ServerSocketChannel的用处是:当有客户端像服务器发送信息的时候,ServerSocketChannel都会给客户端分配一个SocketChannel--实际用的是ServerSocketChannelImpl和SocketChannelImpl

※FileChannel主要用来对本地文件进行 IO 操作,常见的方法有:

1) public int read(ByteBuffer dst) ,从通道读取数据并放到缓冲区中

2) public int write(ByteBuffer src) ,把缓冲区的数据写到通道中

3) public long transferFrom(ReadableByteChannel src, long position, long count),从目标通道

中复制数据到当前通道

4) public long transferTo(long position, long count, WritableByteChannel target),把数据从当

前通道复制给目标通道

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值