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 详解的更多相关文章

  1. Go Channel 详解

    原文链接:Go Channel 详解 Channel类型 Channel类型的定义格式如下: ChannelType = ( "chan" | "chan" & ...

  2. netty系列之:netty中的Channel详解

    目录 简介 Channel详解 异步IO和ChannelFuture Channel的层级结构 释放资源 事件处理 总结 简介 Channel是连接ByteBuf和Event的桥梁,netty中的Ch ...

  3. 大数据学习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 ...

  4. [GO语言的并发之道] Goroutine调度原理&Channel详解

    并发(并行),一直以来都是一个编程语言里的核心主题之一,也是被开发者关注最多的话题:Go语言作为一个出道以来就自带 『高并发』光环的富二代编程语言,它的并发(并行)编程肯定是值得开发者去探究的,而Go ...

  5. netty系列之:netty中各不同种类的channel详解

    目录 简介 ServerChannel和它的类型 Epoll和Kqueue AbstractServerChannel ServerSocketChannel ServerDomainSocketCh ...

  6. 【GoLang】golang context channel 详解

    代码示例: package main import ( "fmt" "time" "golang.org/x/net/context" ) ...

  7. go语言之行--golang核武器goroutine调度原理、channel详解

    一.goroutine简介 goroutine是go语言中最为NB的设计,也是其魅力所在,goroutine的本质是协程,是实现并行计算的核心.goroutine使用方式非常的简单,只需使用go关键字 ...

  8. Go之Channel详解

    channel取数据时未被赋值将被阻塞,可以使用这一机制来完成事件的监听 wg := new(sync.WaitGroup) wg.Add(2) event := make(chan bool) // ...

  9. RabbitMQ 中 Connection 和 Channel 详解

    我们知道无论是生产者还是消费者,都需要和 RabbitMQ Broker 建立连接,这个连接就是一条 TCP 连接,也就是 Connection. 一旦 TCP 连接建立起来,客户端紧接着可以创建一个 ...

随机推荐

  1. CQRS学习——集成ASP.NET Identity[其五]

    [其实和Cqrs没啥关系] 缘由 其实没啥原因,只是觉得以前写了不知多少遍的用户登录复用性太差,实现的功能也不多. 依赖的Nuget包 简单登陆 就简单登陆而言,只需要实现如下接口/抽象类: Stor ...

  2. BZOJ 1741: [Usaco2005 nov]Asteroids 穿越小行星群

    Description 贝茜想驾驶她的飞船穿过危险的小行星群.小行星群是一个NxN的网格(1≤N≤500),在网格内有K个小行星(1≤K≤10000). 幸运地是贝茜有一个很强大的武器,一次可以消除所 ...

  3. fiddler 插件开发

    本文主要讲解使用.net C#语言开发Fiddler插件. 1.在Fiddler 会话列表中添加自定义列 使用FiddlerApplication.UI.lvSessions.AddBoundColu ...

  4. OneAPM 云监控部署与试用体验

    作为 Zabbix 骨灰级粉丝,一直以来对第三方监控(APM)都是拒绝的.一来觉得收费,二来担心数据被人所知,三来觉得 Zabbix 牛逼到无可取代.但是,随着 APM 市场的火爆,我决定「放下身段」 ...

  5. linux telnet命令参数及用法详解--telnet连接远程终端命令

    功能说明:远端登入. 语 法:telnet [-8acdEfFKLrx][-b<主机alias.html' target='_blank'>别名>][-e<脱离字符>][ ...

  6. codeforces #313 div1 C

    同BZOJ 3782 上学路线 QAQ 还比那个简单一点 把坐标(1,1)-(n,m)平移成(0,0)-(n-1,m-1) 设dp[i]表示从(1,1)出发第一次经过障碍且到达第i个障碍的方案数 首先 ...

  7. 这些废弃的 HTML 标签不要用

    HTML 已经发展了多年,现在 W3C 已经发布了 HTML 5.1 的提案推荐标准,一些陈旧废弃的标签已经在后继的标准中逐渐消失.这里为大家列出那些已经被废弃 HTML 标签,看看你是不是还在使用它 ...

  8. IDirect3DDevice9::GetRenderTargetData

    翻译自DXSDK 将渲染目标数据从设备内存拷贝到系统内存. HRESULT GetRenderTargetData(  [in]  IDirect3DSurface9 *pRenderTarget,  ...

  9. POJ2503——Babelfish(map映射+string字符串)

    Babelfish DescriptionYou have just moved from Waterloo to a big city. The people here speak an incom ...

  10. 【php】对PHPExcel一些简单的理解

    这里有关于excel文件的几个概念需要跟大家说明一下,这几个概念对于我们的后续编程是很有帮助的:1.工作簿:在excel环境中用来存储数据并处理数据的文件,又称为excel文件或excel文档,   ...