JavaSE01_Day03(上)-File类、RandomAccessFile
一、File类
1.1递归删除目录
递归定义
使用场景:一个程序,如果一个业务需要自己调用自己才能解决特定的业务逻辑,那么就可以使用递归进行完成。
优点:程序中重复的计算逻辑,可以通过递归进行减少代码的编写量,从而提高编程效率。
缺点:如果程序中使用递归算法,那么会影响程序执行的性能,需要注意在使用递归时,需要添加相应的终止条件,防止程序在执行的过程中反复的去执行一个业务逻辑,没有终止条件。
package cn.tedu.file;
import java.io.File;
/**
* 递归案例演示
*
* 递归就是自己调用自己的操作,
* 主要就是一个方法在方法体中还会调用自己这个方法逻辑,
*
* 因为delete方法只能删除一个空目录,
* 不能进行删除一个非空目录,所以在这里
* 需要使用到递归算法进行删除非空目录。
*
* @author cjn
*
*/
public class FileDeleteDirsDemo08 {
public static void main(String[] args) {
File file = new File("./baojq");//指定文件路径
deleteDir(file);
}
/**
* 删除非空目录文件夹
* 自定方法中,删除对应的文件夹内容需要从外界传递
*/
public static void deleteDir (File file) {
if (file.isDirectory()) {//是目录(文件夹)
//获取文件夹中所有的子项
File[] files = file.listFiles();
//遍历子项内容
for (int i = 0; i < files.length; i++) {
File f = files[i];
deleteDir(f);//递归调用:循环判断是文件还是目录,并执行相应的删除工作
}
}
//无论是空文件夹或者文件都需要调用delete方法进行删除
file.delete();
}
}
1.2 文件过滤器
package cn.tedu.file;
import java.io.File;
import java.io.FileFilter;
/**
* 文件过滤器案例
* FileFilter接口是不能进行实例化的,需要派生类(匿名内部类)实现,
* 在使用文件夹中子项时,进行过滤筛选,返回满足筛选条件的子项
* @author cjn
*
*/
public class FileFilterDemo09 {
public static void main(String[] args) {
//获取当前项目文件夹资源,找到当前项目的根路径
File file = new File(".");
if (file.isDirectory()) {//是目录
//通过文件过滤器进行删选符合要求的子项
//通过匿名内部类方式创建父接口为FileFilter的子类实例
FileFilter filter = new FileFilter() {//使用匿名内部类创建过滤器
/*
* 创建FileFilter子类实例以后,必须要实现接口的accept()方法,
* 在该方法中定义需要满足的条件逻辑,
* 也就意味着可以将满足要求的文件或者文件夹进行筛选,
* 如果说对应的File文件满足过滤要求则返回true,
* 反之则返回false。
*/