博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Channel 详解
阅读量:5107 次
发布时间:2019-06-13

本文共 1646 字,大约阅读时间需要 5 分钟。

  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;}

 

转载于:https://www.cnblogs.com/youngKen/p/4921092.html

你可能感兴趣的文章
Longest Palindromic Substring
查看>>
jQuery插件——Validation Plugin表单验证
查看>>
Web前端学习笔记:Bootstrap框架
查看>>
restrict和volatile的作用
查看>>
c# 枚举基础有[flags]和没有的的区别
查看>>
static关键字——读《嵌入式c语言进阶之道》整理
查看>>
html5 的localstorage
查看>>
项目日志的管理和应用 log4js-Node.js中的日志管理模块使用与封装
查看>>
linux通过端口号查找程序执行路径
查看>>
Java日期
查看>>
laravel vendor目录的安装
查看>>
windows service承载的web api宿主搭建(Microsoft.Owin+service)
查看>>
PAT 1009. 说反话 (20)
查看>>
动态改变EnterpriseLibary数据库访问链接字符串的三种方法
查看>>
子模块的设计与分析
查看>>
(Mark) (Ubuntu)Ubuntu 12.04 LTS 通过ppa安装Fcitx 搜狗输入法 (Linux) (输入法)
查看>>
html5+canvas
查看>>
3月30日
查看>>
[转] Android root 原理
查看>>
知识点集锦
查看>>