在文件io流操作中,java提供的方法不能对含有下级目录的文件夹进行操作,这个时候,往往需要通过递归调用 遍历掉该文件夹子目录下的所有内容分别对其进行操作,再最后对文件夹进行想要实现的操作,以下以 删除方法举例:
package com.yc123.Test;
import java.io.File;
public class FileDemo1 {
public static void main(String[] args) {
//调用删除方法,删除d盘下的temp文件夹
deleteFolder("D:/temp");
}
//定义一个文件删除方法,传入参数为删除文件的目录
public static void deleteFolder(String path){
//创建一个文件目录
File filePath = new File(path);
//获取文件目录下的子文件
File[] files = filePath.listFiles();
//判断文件是否为空
if(files!=null&&files.length>0){
//遍历文件夹的文件
for (File file : files) {
System.out.println("删除文件"+file);
//判断文件类型
if(file.isDirectory()){
//如果为文件夹,则递归调用删除函数
deleteFolder(file.getAbsolutePath());
file.delete();
}else{
//否则直接删除
file.delete();
}
}
//删除主文件夹
System.out.println("删除主文件夹"+filePath);
filePath.delete();
}
}
}
控制台输出为:
删除文件D:\temp\新建文件夹1
删除文件D:\temp\新建文件夹1\新建 Microsoft Excel 97-2003 工作表.xls
删除文件D:\temp\新建文件夹1\新建 Microsoft PowerPoint 2007 幻灯片.pptx
删除文件D:\temp\新建文件夹1\新建 Microsoft Word 97 - 2003 文档.doc
删除文件D:\temp\新建文件夹1\新建 Microsoft Word 文档.docx
删除文件D:\temp\新建文件夹1\新建文件夹
删除文件D:\temp\新建文件夹1\新建文件夹\新建 Microsoft Excel 97-2003 工作表.xls
删除文件D:\temp\新建文件夹1\新建文件夹\新建 Microsoft Excel 工作表.xlsx
删除文件D:\temp\新建文件夹1\新建文件夹\新建文件夹
删除文件D:\temp\新建文件夹1\新建文件夹\新建文件夹\新建 Microsoft Excel 工作表.xlsx
删除文件D:\temp\新建文件夹1\新建文件夹\新建文件夹\新建 Microsoft Word 97 - 2003 文档.doc
删除主文件夹D:\temp\新建文件夹1\新建文件夹\新建文件夹
删除文件D:\temp\新建文件夹1\新建文件夹\新建文本文档.txt
删除主文件夹D:\temp\新建文件夹1\新建文件夹
删除主文件夹D:\temp\新建文件夹1
删除文件D:\temp\新建文件夹2
删除文件D:\temp\新建文件夹3
删除主文件夹D:\temp
其他的一些操作与删除操作类似,同样会用到递归调用来遍历 所有文件来对文件夹操作。