Channel详解
复制自:http://www.cnblogs.com/youngKen/p/4921092.html
java.nio.channels.FileChannel封装了一个文件通道和一个FileChannel对象,这个FileChannel对象提供了读写文件的连接。
1、接口

2、通道操作
a、所有通道接口都是扩展自java.nio.channels.Channel,该通道接口的声明有两个方法:
- 关闭通道close()方法;
- 测试通道状态isOpen(),打开true,关闭false。
//源码
public interface Channel extends Closeable {
boolean isOpen(); void close() throws IOException;
}
因为通道接口都是扩展AutoCloseable接口,如是是在带资源的try代码中创建他们,那么所有通道将会自动关闭。
b、ReadableByteChannel接口:
- int read(ByteBuffer in) 将字节流从设备(通道)读取缓冲区。到达结尾返回-1;
//源码
public interface ReadableByteChannel extends Channel {
int read(ByteBuffer var1) throws IOException;
}
c、WriteableByteChannel接口:
- int write(ByteBuffer out) 将字节流从缓冲区写入到设备(通道)中。
//源码
public interface WritableByteChannel extends Channel {
int write(ByteBuffer var1) throws IOException;
}
d、ByteChannel接口:
- 这接口没有新的方法,继承自ReadableByteChannel和WritableByteChannel。
public interface ByteChannel extends ReadableByteChannel, WritableByteChannel {
}
e、ScatteringByteChannel接口:
- int read(ByteBuffer[] in) 将字节从通道读入到缓冲区中,如果到达尾部返回-1;
- int read(ByteBuffer[] in, int offset, int length) 将字节从offset开始到length读入到缓冲区中。
public interface ScatteringByteChannel extends ReadableByteChannel {
long read(ByteBuffer[] var1) throws IOException;
long read(ByteBuffer[] var1, int var2, int var3) throws IOException;
}
f、GatheringByteChannel接口:
- int write(ByteBuffer[] out) 将字节从缓冲区写入到通道中,返回字节数;
- int write(ByteBuffer[] out, int offset, int length) 将字节从offset开始到length读入到通道中。
public interface GatheringByteChannel extends WritableByteChannel {
long write(ByteBuffer[] var1) throws IOException;
long write(ByteBuffer[] var1, int var2, int var3) throws IOException;
}
Channel详解的更多相关文章
- Go Channel 详解
原文链接:Go Channel 详解 Channel类型 Channel类型的定义格式如下: ChannelType = ( "chan" | "chan" & ...
- netty系列之:netty中的Channel详解
目录 简介 Channel详解 异步IO和ChannelFuture Channel的层级结构 释放资源 事件处理 总结 简介 Channel是连接ByteBuf和Event的桥梁,netty中的Ch ...
- 大数据学习day36-----flume02--------1.avro source和kafka source 2. 拦截器(Interceptor) 3. channel详解 4 sink 5 slector(选择器)6 sink processor
1.avro source和kafka source 1.1 avro source avro source是通过监听一个网络端口来收数据,而且接受的数据必须是使用avro序列化框架序列化后的数据.a ...
- [GO语言的并发之道] Goroutine调度原理&Channel详解
并发(并行),一直以来都是一个编程语言里的核心主题之一,也是被开发者关注最多的话题:Go语言作为一个出道以来就自带 『高并发』光环的富二代编程语言,它的并发(并行)编程肯定是值得开发者去探究的,而Go ...
- netty系列之:netty中各不同种类的channel详解
目录 简介 ServerChannel和它的类型 Epoll和Kqueue AbstractServerChannel ServerSocketChannel ServerDomainSocketCh ...
- 【GoLang】golang context channel 详解
代码示例: package main import ( "fmt" "time" "golang.org/x/net/context" ) ...
- Channel 详解
java.nio.channels.FileChannel封装了一个文件通道和一个FileChannel对象,这个FileChannel对象提供了读写文件的连接. 1.接口 2.通道操作 a.所有通道 ...
- go语言之行--golang核武器goroutine调度原理、channel详解
一.goroutine简介 goroutine是go语言中最为NB的设计,也是其魅力所在,goroutine的本质是协程,是实现并行计算的核心.goroutine使用方式非常的简单,只需使用go关键字 ...
- Go之Channel详解
channel取数据时未被赋值将被阻塞,可以使用这一机制来完成事件的监听 wg := new(sync.WaitGroup) wg.Add(2) event := make(chan bool) // ...
- RabbitMQ 中 Connection 和 Channel 详解
我们知道无论是生产者还是消费者,都需要和 RabbitMQ Broker 建立连接,这个连接就是一条 TCP 连接,也就是 Connection. 一旦 TCP 连接建立起来,客户端紧接着可以创建一个 ...
随机推荐
- 报警视图 报警窗口 报警指示器 的组态 PLC变量 事故信息 MW16 报警确认变量 MW18 转速变量 MW20 温度变量 MW22 用 M17.0 来模拟事故信息的最低位。用PLCSIM 给定温度为800 度 报警视图与报警窗口显示故障
组态报警并用PLCSIM进行仿真 步骤1 : 组态离散变量报警 在PLC 的默认变量表中 创建变量"事故信息" 数据类型是word 绝对地址是MW16 同时建立 报警确认变量 MW ...
- java学习-初级入门-面向对象③-类与对象-类与对象的定义和使用1
今天学习类与对象.先大致解释一下类与对象的含义. 对象:object 有物体这一概念,一切皆对象(物体),对象由静态的属性和动态的行为组成. 比如说水杯: 水杯的静态属性:材质,容量,质量,颜色 动态 ...
- 《C++ Primer(中文版)(第5版)》斯坦利·李普曼 (Stanley B. Lippman) (作者), 约瑟·拉乔伊 (Josee Lajoie) (作者), 芭芭拉·默 (Barbara E. Moo) (作者) azw3
内容简介: 这本久负盛名的C++经典教程,时隔八年之久,终迎来的重大升级.除令全球无数程序员从中受益,甚至为之迷醉的——C++ 大师 Stanley B. Lippman 的丰富实践经验,C++标准委 ...
- 「PA2014」Fiolki
传送门 Bzoj 解题思路 构造法. 对于每一次的倾倒操作,连边 \(newnode\to u,newnode\to v\). 最后所有的反应都会在构造出来的树上的对应两点的 \(\text{LCA} ...
- 前端学习笔记系列一:12 js中获取时间new date()的用法
获取时间: 1 var myDate = new Date();//获取系统当前时间 获取特定格式的时间: 1 myDate.getYear(); //获取当前年份(2位) 2 myDate.get ...
- pgsql数据库 pg_hba.conf 中 METHOD 的说明
pg_hba.conf 文件是pgsql用于配置访问权限的配置文件, 内容如下: ##############begin#################### # TYPE DATABA ...
- Vue项目中v-for无法渲染数据
在Vue项目中,我们想要实现下面的布局效果 后端返回的数据格式如下,可以看出产品列表五张图的数据位于同一个数组中 而我的html结构如下: 我希望直接渲染左边一张大图,然后右边的四张小图通过v-for ...
- Window Server 2019 配置篇(8)- 利用MDT定制自动加入域的脚本
我们要更改我们的镜像文件,使得自动安装完成后,计算机已经自动在域中 删除在WDS-server上做的自动部署,我们在上面安装一下MDT和ADK文件,这两个文件如果需要的话可以评论,我会在随后上传 之后 ...
- jenkins -- 邮件的配置
参考博文:https://blog.csdn.net/lykio_881210/article/details/81135769 https://www.jianshu.com/p/29a29ce6e ...
- 2-10 就业课(2.0)-oozie:7、job任务的串联
4.4.oozie的任务串联 在实际工作当中,肯定会存在多个任务需要执行,并且存在上一个任务的输出结果作为下一个任务的输入数据这样的情况,所以我们需要在workflow.xml配置文件当中配置多个ac ...