首先使用FileChannel 的open方法获取一个FileChannel对象。下面这段代码是FileChannel中open方法的代码。

public static FileChannel open(Path path,
Set<? extends OpenOption> options,
FileAttribute<?>... attrs)
throws IOException
{
FileSystemProvider provider = path.getFileSystem().provider();
return provider.newFileChannel(path, options, attrs);
}

private static final FileAttribute<?>[] NO_ATTRIBUTES = new FileAttribute[0];

public static FileChannel open(Path path, OpenOption... options)
throws IOException
{
Set<OpenOption> set = new HashSet<OpenOption>(options.length);
Collections.addAll(set, options);
return open(path, set, NO_ATTRIBUTES);
}

然后对代码进行介绍(其实就是翻译了源代码的注释而已)。首先介绍参数options,OpenOption以StandardOpenOption为例进行介绍

    public enum StandardOpenOption implements OpenOption

该枚举(StandardOpenOption)包括READ、 WRITE、 APPEND、 CREATE 、CREATE_NEW、 DELETE_ON_CLOSE、TRUNCATE_EXISTING还有SYNC     DSYNC

区别在于SYNC除了会将跟新的文件内容同步到存储设备上之外,还会同步更新文件的元数据。

InputStream 或者OutputSteam获取Channel的get方法

一下以FileOutputStream为例:

public FileChannel getChannel() {
synchronized (this) {
if (channel == null) {
channel = FileChannelImpl.open(fd, path, false, true, append, this);
}
return channel;
}
}

代码分析 fd是FileDescriptor,在FileOutputStream中有 private FileChannel channel;

最新文章

  1. 第三方提权之serv-u提权
  2. Git 工作流程
  3. RHEL7管道与重定向
  4. 学习总结 HTML简单应用
  5. HITAG 2 125kHz RFID IC Read-Write 256 bits
  6. UIImagePickerController Class 概述
  7. 乐1/MACBOOK/ N1 Type-C接口新体验
  8. Sqlserver2005手动备份远程数据库到本地数据库方法
  9. Nagios监控生产环境redis群集服务战
  10. centos 日常操作指令
  11. 实现 js 数据类型的判断函数type
  12. ionic3 创建项目至apk打包全过程教程
  13. 使用Jupyter Notebook编写技术文档
  14. IT资源关东煮第一期【来源于网络】
  15. 基于Quartz.NET 实现可中断的任务(转)
  16. ORACLE基本操作备忘
  17. SQLite中7(8)形参的query语句的用法
  18. HTML中css和js链接中的版本号
  19. 【剑指offer】判断一个序列是否是二叉搜索树的后序遍历,C++实现
  20. 【循环控制器】-(针对中间部分要循环的场景,相当于loadrunner的action部分)

热门文章

  1. 这是一篇关于:以时间表的形式来介绍Java如何演变至今,以及Java版本的一些特性的分享
  2. HTTPS原理浅析
  3. CCF-201312-4-有趣的数
  4. HDU 1754 线段树 单点跟新 HDU 1166 敌兵布阵 线段树 区间求和
  5. CCF-201412-2-Z字形扫描
  6. FastDFS教程Ⅲ-文件服务器扩容
  7. otter双A同步配置
  8. CentOS7脱机安装SQL Server 2017
  9. OpenXml读取word内容(二)
  10. Java-----关于eclipse导入项目发生的问题及解决办法