@Wishes
2018-08-10T10:56:11.000000Z
字数 1615
阅读 707
在用java的时候,我们总是自上而下从API的层面,整体地把握JDK的用法,然而这样对于了解JDK的内部实现及其原理却并不是很好,那我想,从操作系统的接口层面,自下而上去理解JDK的代码,这样会更好的掌握JDK的具体实现。那接下来我分享下自己平常读JDK代码的一些理解,这里操作系统仅限于Linix,系统接口用POSIX.1标准的定义。
既然要了解文件的操作类,那么肯定要大致了解下操作系统提供了哪些文件操作的函数接口及其作用,下面就File
类用到的说明下:
int stat()
int lstat()
打开File类的代码,有个变量FileSystem fs = DefaultFileSystem.getFileSystem()
,FileSystem
是个抽象类,native方法的调用和定义是在具体实现类中,而由于不同平台的文件系统的差异,所以这个fs
变量获取到的具体实现也不一样,在mac os下是UnixFileSystem
的类,而在linux下是1
类。可以看到,File
类对文件的操作是借助FileSystem
来实现的。
length()
,lastModified()
isDirectory()
,exists()
,exists()
,isDirectory(),isFile(), isHidden(), {"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"]}}