通过一张图来理解递归的原理
代码实现文件的遍历
代码实现对文件的遍历(利用递归)
package cn.bzu.look.dao;
import java.io.File;
import java.io.IOException;
import javax.tools.DiagnosticCollector;
public class FileDemo {
public static void main(String[] args) {
File file= new File("G:\\FileTest");
FileDemo fileDemo = new FileDemo();
fileDemo.traverseFile(file);
}
public void traverseFile(File file) {
//获得到目录下的子目录对象
File[] files = file.listFiles();
//对获得子目录进行遍历,获得子目录的子目录
if(files!=null && files.length>0) {
for(File f:files) {
//调用方法(递归)
traverseFile(f);
}
}
//输出文件的路径
System.out.println(file.getPath());
}
}
输出结果是
G:\FileTest\aaa\aa.txt
G:\FileTest\aaa\inneraa\aahuh.txt
G:\FileTest\aaa\inneraa\hhhh
G:\FileTest\aaa\inneraa
G:\FileTest\aaa
G:\FileTest\bbb\bbb.txt
G:\FileTest\bbb\innerBBB\innerBBB.txt
G:\FileTest\bbb\innerBBB
G:\FileTest\bbb
G:\FileTest\enen\hengheng
G:\FileTest\enen
G:\FileTest\fileTest.txt
G:\FileTest\jiangheng.txt
G:\FileTest
代码实现对文件的删除(利用递归)
package cn.bzu.look.dao;
import java.io.File;
import java.io.IOException;
import javax.tools.DiagnosticCollector;
public class FileDemo {
public static void main(String[] args) {
File file= new File("G:\\FileTest");
FileDemo fileDemo = new FileDemo();
fileDemo.deleteFile(file);
}
public void deleteFile(File file) {
//获得到目录下的子目录对象
File[] files = file.listFiles();
//对获得子目录进行遍历,获得子目录的子目录
if(files!=null && files.length>0) {
for(File f:files) {
//调用方法(递归)
deleteFile(f);
}
}
//删除文件
file.delete();
}
}