File文件基本操作:
案例需求:
- 给定一个路径(E:\Hmw),通过递归完成遍历该目录下所有内容,并把所有文件的绝对路径输出在控制台
思路:
- 通过递归遍历
具体方法:
- 首先通过目录名创建文件对象
- 写一个lookDirectory方法用来遍历文件目录
- 首先通过listFiles方法获取目录的所有文件对象
- 通过增强for循环遍历目录 得到目录里的每一个文件对象
- 接下来判断条件尤为重要
- 通过isFile()方法判断是否为文件 是文件即输出文件的绝对路径
- 若不为文件即为目录,也可用isDirectory方法判断,是目录即递归调用该方法 - 以上即可完成遍历所有目录 具体见以下代码
删除所有文件及其目录:
- 递归实现
- 判断一个文件夹是否为空可以通过file.directory.length是否等于0来判断 因为返回的是一个File数组
- 若为文件则直接调用delete删除
- 若为目录且目录不为空,继续遍历 为空则删除目录
package cn.dreamyi.demo1.file;
import java.io.File;
public class FileDemo2 {
public static void main(String[] args) {
/**
* 案例需求
*
* 给定一个路径(E:\\itcast),通过递归完成遍历该目录下所有内容,并把所有文件的绝对路径输出在控制台
*/
//首先创建文件对象
File f = new File("D://Hmw");
lookDirectory(f);//遍历目录
deleteFile(f);//删除文件
}
/**
* 定义遍历方法
* @param file 需要遍历的目录
*/
public static void lookDirectory(File file){
File[] files = file.listFiles();//得到目录下的所有文件对象
for (File item : files){
if (item.isFile()){
System.out.println("\t\t"+item.getAbsolutePath());
} else {
System.out.println(item.getAbsolutePath());
lookDirectory(item);
}
}
}
/**
* 删除文件
* @param file 需要删除的文件对象
*/
public static void deleteFile(File file){
File[] files = file.listFiles();
if (files.length == 0){
file.delete();
} else {
for (File item : files){
if (item.isFile()){
item.delete();
} else {
if (item.listFiles().length == 0){
item.delete();
} else {
deleteFile(item);
}
}
}
}
}
}
公众号:【从简出发(mmk_xgg)】
一起进步呀