Java 基础(三)| IO流之使用 File 类的正确姿势

一、什么是 File 类?
java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。

二、File 类的使用
2.1 构造方法
File 类的构造有三种:

public File(String pathname) : 直接通过文件路径字符串创建
public File(String parent, String child) : 通过父和子路径字符串创建

public File(File parent, String child) : 先创建父级 file 对象,再结合子路径创建
Java 基础(三)| IO流之使用 File 类的正确姿势_第1张图片
image.png
三种创建 File 对象的方法如上所示,此外需要说明的是:一个 File 对象代表硬盘中的目录或者文件,而这个目录或文件在硬盘中是否存在不影响 File 对象的创建。

2.2 获取功能的方法
public String getAbsolutePath() :返回指定 File 实例的绝对路径
public String getPath() :将指定 File 实例的抽象路径名转换为一个路径名字符串
public String getName() :返回指定 File 实例的目录或文件名
public long length() :返回指定 File 实例的文件长度

在硬盘 Z:\file 下,新建一个 file.txt 文件,文件内容是 26 个英文字母。
Java 基础(三)| IO流之使用 File 类的正确姿势_第2张图片
image.png
File 的 get 方法如上示例,值得注意的是:getPath () 与 getAbsolutePath () 的区别在于,前者获取的是构造 File 实例时的路径,后者获取的是 File 实例的绝对路径。当构造 File 实例的路径也是绝对路径时,二者是一样的。

2.3 绝对路径与相对路径
绝对路径:从盘符开始的完整路径

相对路径:相对于你当前的项目目录的路径,在开发中常用此路径
Java 基础(三)| IO流之使用 File 类的正确姿势_第3张图片
image.png
2.4 判断功能的方法
判断功能的方法主要有三个,输出都是布尔值:

public boolean exists() :指定 File 实例代表的文件或者目录是否存在
public boolean isDirectory() :指定 File 实例是不是目录

public boolean isFile() :指定 File 实例是不是文件
Java 基础(三)| IO流之使用 File 类的正确姿势_第4张图片
image.png
2.5 创建与删除方法
public boolean createNewFile() :指定 File 实例的文件不存在时,创建空文件

public boolean delete() :删除指定 File 实例表示的文件或目录
public boolean mkdir() :创建指定 File 实例表示的目录

public boolean mkdirs() :创建指定 File 实例表示的目录,以及父目录
Java 基础(三)| IO流之使用 File 类的正确姿势_第5张图片
image.png
2.6 目录的遍历
public String[] list() :返回一个 String 数组,表示指定 File 实例目录中的所有子文件或目录。
public File[] listFiles() :返回一个 File 数组,表示指定 File 实例目录中的所有的子文件或目录。
Java 基础(三)| IO流之使用 File 类的正确姿势_第6张图片
image.png
值得注意的是:不管是 list () 还是 listFiles () 方法,所指定的 File 实例都必须是在硬盘中实际存在的,否则无法遍历。

三、递归
3.1 什么是递归?
指的是程序在某个方法内自己调用自己的操作。

3.2 递归的分类
递归分为两种:

直接递归:称为方法自身调用自己。
间接递归:可以 A 方法调用 B 方法,B 方法调用 C 方法,C 方法调用 A 方法。
3.3 递归的使用规范
递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出
在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出
构造方法,禁止递归
四、递归的使用
如果你不知道什么时候使用递归?那这里有一条很简单的定律:当你明确递归次数不至于造成内存溢出是,可使用;否则,不要使用。

递归有很多的使用场景,比如递归求和,递归阶乘。而递归多级目录、遍历文件、搜索文件是我们在开发中常用的,它是这么实现的:
Java 基础(三)| IO流之使用 File 类的正确姿势_第7张图片
image.png

你可能感兴趣的:(Java 基础(三)| IO流之使用 File 类的正确姿势)