[关闭]
@Wishes 2018-08-10T10:56:11.000000Z 字数 1615 阅读 662

Java-IO File类的源码

0:概述

在用java的时候,我们总是自上而下从API的层面,整体地把握JDK的用法,然而这样对于了解JDK的内部实现及其原理却并不是很好,那我想,从操作系统的接口层面,自下而上去理解JDK的代码,这样会更好的掌握JDK的具体实现。那接下来我分享下自己平常读JDK代码的一些理解,这里操作系统仅限于Linix,系统接口用POSIX.1标准的定义。

1:文件与目录的系统接口

既然要了解文件的操作类,那么肯定要大致了解下操作系统提供了哪些文件操作的函数接口及其作用,下面就File类用到的说明下:

  1. int stat()
  2. int lstat()

2:File类具体实现

打开File类的代码,有个变量FileSystem fs = DefaultFileSystem.getFileSystem()FileSystem是个抽象类,native方法的调用和定义是在具体实现类中,而由于不同平台的文件系统的差异,所以这个fs变量获取到的具体实现也不一样,在mac os下是UnixFileSystem的类,而在linux下是1类。可以看到,File类对文件的操作是借助FileSystem来实现的。

{"all":{"name_dict":{"sysCode":"sys_code","vCPU":"cpu_core_num","insName":"inst_name","osType":"os_type","usage_mode":"scope_type","vMEM":"mem_size","vDISK":"disk_size","vcl":"cluster_name","insIp":"inst_ip","osip":"host_ip","soft":"type"},"environment_dict":{"CNSZ17":"PRD","CNSZ20":"DR"},"environment_name":"vcl","key_name":"{osip}","default_value":{},"dalive_prd_dr":"shuanghuo","dalive_prd_dr_dict":{"是":1},"decimal_type":["vCPU","vMEM"]},"REDIS_INST":{"name_dict":{"sysCode":"sys_code","vCPU":"cpu_core_num","insName":"inst_name","osType":"os_type","usage_mode":"scope_type","vMEM":"mem_size","vDISK":"disk_size","vcl":"cluster_name","insIp":"inst_ip","osip":"host_ip","soft":"type"},"environment_dict":{"CNSZ17":"PRD","CNSZ20":"DR"},"environment_name":"vcl","key_name":"{osip}","default_value":{},"dalive_prd_dr":"shuanghuo","dalive_prd_dr_dict":{"是":1},"decimal_type":["vCPU","vMEM"]}}

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注