Java—遞歸
遞歸
1. 概述
方法中調用當前方法
2. 遞歸需要注意的事項
遞歸次數不能過多,否則記憶體溢出
3. 案例
3.1 獲取指定目錄下的文件名
public class AllDirPath {
/*
* 遞歸列印所有子目錄中的文件路徑
*/
public static void main(String[] args) {
// 1. 獲取要查詢的目錄,判斷該文件是否存在
File file = new File("e:/培訓");
// 2. 存在,獲取該目錄下所有的文件
// 3. 判斷此文件是否為文件夾;是的話繼續第2步,直到結束
// 所以2和3開始需要遞歸;把其封裝到一個方法中
getAllFile(file);
}
private static void getAllFile(File file) {
// 2. 存在,獲取該目錄下所有的文件
// 3. 判斷此文件是否為文件夾;是的話繼續第2步,直到結束
if(file.exists()){
File[] listFiles = file.listFiles();
for(File f: listFiles){
if(f.isDirectory()){
getAllFile(f);
}else{
System.out.println(f.getName());
}
}
}else{
System.out.println("要查詢的目錄還不存在,請先去創建!");
}
}
}
3.2 刪除指定目錄
public class DelDir {
public static void main(String[] args) {
// 獲取指定要刪除目錄
File file = new File("e:/peixun");
deleteDir(file);
}
public static void deleteDir(File file) {
// 先進行判斷是否為文件夾
if(file.isDirectory()){
File[] listFiles = file.listFiles();
for (File tempFile : listFiles) {
deleteDir(tempFile);
}
// 直至文件夾為空時,刪除文件夾
boolean delete = file.delete();
System.out.println(file.getName() + "..." + delete);
}else{
// 不是文件夾直接刪
boolean delete = file.delete();
System.out.println(file.getName() + "..." + delete);
}
}
}