NIO学习笔记(二)channel

CPU—中央处理器
Channel —独立的处理器–专门用于IO–附属于CPU

1:用于源节点与目标节点的链接,
在JAVA NIO中负责缓冲区中数据的传输。channel本身不存储数据,需要配合缓冲区进行传输。
2:主要分类
java.nio.channels.Channel
| – FileChannel
| – SocketChannel
| – ServerSocketChannel
| – DatagramChannel
3.获取通道
I、java针对支持通道的类提供了getChannel()方法
本地IO:
FIleInputStream/FileOutPutStream
RandomAccessFile
网络IO;
Socket
ServerSocket
DatagramSocket
II、jdk 1.7中 NIO.2 针对各个通道提供了一个静态方法open()
III、jdk1.7中NIO.2的files工具类的newByteChannel()
4、操作(一)(非直接缓冲区)

  I、 获取通道 
  II、分配指定大小的缓冲区
  III、将通道中的数据存到缓冲区
  IV、切换成读数据模式,读取缓冲区数据写到输出的通道中,clear缓冲区
  V、关通道,关流

5、操作(二)(直接缓冲区内存映射文件)(效率高,但不稳定)

  I、open(Path,standardOpenOption枚举类型的读)获取读Channel
  II、open(Path,standardOpenOption枚举类型的写+读,create_new枚举)获取写Channel
  III、MappedByteBuffer inBuffer = inChannel.map(MapMode.Read_only,0,inchannel.size());
  IV、MappedByteBuffer outBuffer = outChannel.map(MapMode.Read_Write,0,inchannel.size());
  V、 byte[] dst = new Byte[inBuffer.limit];
  	inBuffer.get(dst);
  	outBuffer.put(dst);
  VI、关通道

6、通道之间的数据传输(直接缓冲区方式)

  I、open(Path,standardOpenOption枚举类型的读)获取读Channel
  II、open(Path,standardOpenOption枚举类型的写+读,create_new枚举)获取写Channel
  III、inchannel.transferTo(0,inChannel.size(),outChannel);
  	/outChannel.transferFrom(inChannel,0,inChannel.size());
  IV、关通道
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值