File类是java提供类来让你去访问文件、文件属性和文件系统。File访问文件的具体实现是由java虚拟机(jvm)来帮你实现,所以后面在源码分析的时候,你会看到很多调用native关键字来标识的jvm的本地方法。后面在做jvm的章节会有具体讲到。
这里不做File类的源码分析,因为分析到fs对象的时候,会找不到具体的实现,因为fs有些核心的实现是jvm的本地方法中体现的,所以这里只会做File类的一些使用。这里多说一句为啥说java是可以跨平台的,
这里多说一句为啥说java是可以跨平台的,在这里也有小体现。
class DefaultFileSystem {
/**
* 这里你会看到,这个是适用于Unix平台的,
* 因为我在输出这篇文章的时候用的mac-unix系统
* Return the FileSystem object for Unix-based platform.
*/
public static FileSystem getFileSystem() {
return new UnixFileSystem();
}
}
而在windows版本的
class DefaultFileSystem {
/**
* Return the FileSystem object for Windows platform.
* 这是适用windows平台的
*/
public static FileSystem getFileSystem() {
return new WinNTFileSystem();
}
}
常用方法使用案例
//getName获取文件名称
getParent:获取上级路径
getParentFile:获取上级文件;
isDirectory:是否是文件目录,也可以说是文件夹
getPath:获取文件的当前路径
isAbsolute:是否是绝对路径
getAbsolutePath:获取文件的绝对路径
getAbsoluteFile:获取文件
getCanonicalPath:相对路径
canRead:文件是否可读(文件是否有读权限)
canWrite:文件是否可写(文件是否有写权限)
exists:文件是否存在
isFile:是否是个文件,如下图,这里和上面的isDirectory是有区别的,
因为parentFile本身就是个目录,所以这里返回false
isHidden:是否是隐藏文件
delete:直接删除一个文件
deleteOnExit:File并没有直接删除,?是在虚拟机正常运?结束后才会删除。
list:如果File不是个目录的话,会返回null,如果是目录的话,就会返回目录下所有文件的路径
listFiles:如果File不是个目录的话,会返回null,
如果是目录的话,就会返回目录下所有文件的路径,所以这里用的时候需要做判空处理
mkdir:创建目录
mkdirs:创建多级目录
总结
File类如果需要做源码分析的话,请留言,等整理完基础知识后,会录一个视频详细讲解。因为视频带来的学习效果比文字还要好。
喜欢的同学,可以点赞、关注+收藏,后期还会推出其他框架源码分析。
如果有需要补充的地方,留言区见。