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 连接建立起来,客户端紧接着可以创建一个 ...
随机推荐
- mysql建表且某字段内不允许出现重复值
CREATE TABLE `admin` ( `id` ) NOT NULL AUTO_INCREMENT , `username` varchar() NOT NULL , `password` v ...
- 搭建 Android 开发环境,初试HelloWorld (win7) (上) (转)
搭建Android开发环境主要有以下几步要做: 1.JDK安装 2.Eclipse安装 3.Android SDK安装 4.ADT安装 5.创建AVD 1.JDK(Java Development K ...
- Discuz云平台站点信息同步失败,An unknown error occurred. May be DNS Error.
站点信息同步失败 An unknown error occurred. May be DNS Error. (ERRCODE:1) 经过Discuz教程网(http://www.1314study.c ...
- Firefly的角色跳转场景简单示例
源地址:http://bbs.9miao.com/thread-45790-1-2.html 本例演示的是模拟游戏服务端,让角色在场景1中跳转到场景2中.在实际游戏中,client将要跳转的角色id和 ...
- weak_ptr的一点认识
近期在补充和梳理C++方面的知识的时候,遇到了WeakPtr这个概念和用法,不甚明白,Google出了一堆文字,包括Boost的shared_ptr和weak_ptr的比较,以及其他一些博客里面给的例 ...
- c++内存中字节对齐问题详解
一.什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址 ...
- HeadFirst设计模式之观察者模式
一.什么是观察者模式 观察者模式定义了一系列对象间一对多的关系,当主题对象的状态发生变化时,会通知所有观察者 二.自定义观察模式 1. 2. package headfirst.designpatte ...
- Retrofit初识
Retrofit Retrofit是一套RESTful架构的Android(Java)客户端实现,基于注解,提供JSON to POJO(Plain Ordinary Java Object,简单Ja ...
- (从终端看linux-2)浅析terminal创建时ptmx和pts关系
我们打开一个terminal,那么将会在devpts文件系统/dev/pts下创建一个对应的pts字符文件,该pts字符文件节点直接由/dev/ptmx节点的驱动函数ptmx_open()调用devp ...
- HTML5学习(五)----SVG
参考教程地址:http://www.w3school.com.cn/html5/html_5_svg.asp HTML5 支持内联 SVG. 什么是SVG? SVG 指可伸缩矢量图形 (Scalabl ...