本程序实现了File类的目录文件查找功能,目录删除功能。
package javaIO;
import java.io.File;
public class DeleteDirectory {
/**
* 作者:Renaissance&复活
* 时间:2021/10/13 13:42
* 介绍:本程序执行File的查找、删除操作*/
public static void main(String[] args) {
File file = new File("E:\\E文件夹"); //自定义一个文件名(建议额外创建一个文件夹做测试,防止重要文件丢失及发生某些错误)
printFile(file);
if(deleteDirectory(file)) //返回true时,输出删除成功语句
System.out.println("目录删除成功");
else
System.out.println("目录删除失败");
}
/**
* 算法:
* 1、判断文件是否存在且为目录
* 2、得到目录下的所拥有文件(file.listFiles()方法)
* 3、循环输出(foreach()循环可实现对数组元素的有效输出)
* */
public static void printFile(File file) {
if(file.exists() && file.isDirectory()) { //判断是否文件存在且为目录
File[] subfile = file.listFiles(); //把目录下的所有子文件赋给数组
for (File file2 : subfile) { //输出所有文件的绝对路径并换行
System.out.println(file2.getAbsolutePath());
}
}else //如果文件不存在,输出错误
System.out.println("Invalid input");
}
/**
* 算法:
* 1、判断文件是否存在且为目录
* 2、得到目录下的所拥有文件(file.listFiles()方法)
* 3、循环检索文件
* 4、得到文件名(file.getName())
* 5、判断是否为目标文件(endsWith()方法检查文件是否以特定字符串结尾)
* 6、输出文件名
* */
public static void searchFiles(File file, String name) {
if(file.exists() && file.isDirectory()) { //当目录存在且为目录时
File[] subfile = file.listFiles();
for (File file2 : subfile) {
if(file2.getName().endsWith(name)) //判断文件名是否以name为后缀
System.out.println(file2.getAbsolutePath());
}
}
}
/**
* 算法:
* 1、判断文件是否存在且为目录
* 2、把目录下的所有子文件赋给数组
* 3、检索目录下的所有文件
* 3-1、如果是目录,递归调用本方法继续检索
* 3-2、如果是文件,直接删除
* 4、当最后只剩下目标目录时,删除目录
* */
public static boolean deleteDirectory(File file) {
if(file.exists()) { //判断文件是否存在
File[] subfile = file.listFiles(); //把目录下的所有子文件赋给数组
for (File file2 : subfile) { //检索目录下的所有文件
if(file2.isDirectory()) //如果是目录,递归调用本方法继续检索
deleteDirectory(file2);
else
file2.delete(); //如果是文件,直接删除
}
if(file.exists()) { //当最后只剩下目标目录时,删除目录
file.delete();
return true;
}
}
return false; //目录不存在时,返回false
}
}