Channel 详解
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" ) ...
- 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 连接建立起来,客户端紧接着可以创建一个 ...
随机推荐
- (转)关于linux中内核编程中结构体的赋值操作(结构体指定初始化)
网址:http://blog.chinaunix.net/uid-24807808-id-3219820.html 在看linux源码的时候,经常会看到类似于下面的结构体赋值的代码: struct d ...
- 使用Yeoman搭建 AngularJS 应用 (6) —— 让我们搭建一个网页应用
原文地址:http://yeoman.io/codelab/review-generated-files.html 打开mytodo文件夹,你会看到现在的基架.如下图所示 在mytodo文件夹,我们能 ...
- 基于注解风格的Spring-MVC的拦截器
基于注解风格的Spring-MVC的拦截器 Spring-MVC如何使用拦截器,官方文档只给出了非注解风格的例子.那么基于注解风格如何使用拦截器呢? 基于注解基本上有2个可使用的定义类,分别是Defa ...
- 如何使用 XSD
如何使用 XSD 一个简单的 XML 文档: 请看这个名为 "note.xml" 的 XML 文档: <?xml version="1.0"?> & ...
- protobuf 向前兼容向后兼容
http://blog.163.com/jiang_tao_2010/blog/static/12112689020114305013458/ 不错的protobuf.. protobuf的编码方式: ...
- Dialog控件
代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--& ...
- 团体程序设计天梯赛-练习集L2-005. 集合相似度
L2-005. 集合相似度 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定两个整数集合,它们的相似度定义为:Nc/Nt*1 ...
- Smarty格式化数字为INT数
<? require("setup.php"); define('PAGETITLE','pagtitle'); function insert_top($lid,$sid) ...
- hdu 1085
额 母函数 #include <cstdio> #include <cstring> int a[3],b[3]= {1,2,5}; int c1[10001],c2[1 ...
- 为你的PHP程序选择合适的密码库(初稿)
如果本文中的术语让你感到疑惑,请先参阅密码学术语及概念一文. 密码学不是魔术.加密一个应用程序并不能保证它在袭击下的安全(特别是在你没有设置验证密文的情况下).但如果出于商业需求你要确保程序的安全,传 ...