递归,即方法自己调用自己。在这个问题中,我们无法知道文件夹的深度,更无法根据深度来实现循环的嵌套 ,所有可以使用递归实现。
上代码
public static void main(String[] args) {
delFileByName("D:\\test","a");
}
/**
* 测试删除
* @param url 指定的文件路径
* @param s 指定的特殊字符
*/
public static void delFileByName(String url, String s) {
// 创建文件
File grandpaFile = new File(url);
// 检查该对象是否是文件夹
if(grandpaFile.isDirectory()) {
// 返回该目录中的文件和目录
File[] fatherFiles = grandpaFile.listFiles();
if (fatherFiles.length > 0) {
// 循环返回的文件
for (File sonFile : fatherFiles) {
// 继续调用自身进行判断
delFileByName(sonFile.getPath(),s);
}
} else {
// 判断自己是否包含特殊字符
if(grandpaFile.getName().contains(s)) {
// 删除包含特殊字符的文件
grandpaFile.delete();
}
}
} else {
if(grandpaFile.getName().contains(s)) {
grandpaFile.delete();
}
}
}