JAVA從零開始學習知識整理——day08—【File類、遞歸】

一、File類
類是文件和目錄路徑名的抽象表示,主要用於文件和目錄的創建、查找和刪除等操作。
1.構造方法
public File(String pathname) :通過將給定的路徑名字符串轉換爲抽象路徑名來創建新的 File實例。
public File(String parent, String child) :從父路徑名字符串和子路徑名字符串創建新的 File實例。
public File(File parent, String child) :從父抽象路徑名和子路徑名字符串創建新的 File實例。
2.常用方法
-getAbsolutePath:獲取絕對路徑
-getPath:獲取路徑
-getName:獲取文件/或者目錄的名字
-length:獲取文件長度
3.絕對路徑和相對路徑
絕對路徑:從盤符開始的路徑,這是一個完整的路徑。
相對路徑:相對於項目目錄的路徑,這是一個便捷的路徑,開發中經常使用。
4.判斷功能方法
-isDirectory:是否爲文件夾
-isFile:是否爲文件
-exists:文件/目錄是否存在
5.創建刪除方法
-creatNewFile:當且僅當該名稱文件不存在時,創建一個新的空文件
-delete:不走回收站的刪除
-mkdir:創建文件夾
-mkdirs:創建多級文件夾
6.目錄的遍歷:
-list:返回一個String數組,表示當前File目錄中所有的子文件和文件夾
-listFile:返回一個File數組,表示當前File目錄中所有的子文件和文件夾

二、遞歸
在當前方法內調用自己。
例:計算1-n的和:

public class Demo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入n:");
        int n = sc.nextInt();
        int method = method(n);
        System.out.println(method);
    }

    private static int method(int n) {
        if(n ==1){
            return 1;
        }
        return  n + method(n-1);
    }
}

求階乘改爲*即可。

三、綜合案例
3.1 文件搜索

public class Demo {
    public static void main(String[] args) {
        //創建一個路徑對象
        File f1 = new File("D:\\課件\\就業班\\day07-13\\day08");
        method(f1);
       
       
    }

    private static void method(File f1) {
        //調用listFile方法,獲取當前路徑下的文件夾和文件
        File[] files = f1.listFiles();
        //進行遍歷
        for (File file : files) {
            if(file.isDirectory()){
                method(file);
            }else {
                System.out.println(file);
            }
        }
    }
}

3.2 文件過濾器優化
搜索後綴名是.java的文件:

public class Demo {
    public static void main(String[] args) {
        //創建一個路徑對象
        File f1 = new File("D:\\課件\\就業班\\day07-13\\day08");
        method(f1);
       
       
    }

    private static void method(File f1) {
        //調用listFile方法,獲取當前路徑下的文件夾和文件
        File[] files = f1.listFiles();
        //進行遍歷
        for (File file : files) {
            if(file.isDirectory()){
                method(file);
            }else {
                System.out.println(file);
            }
        }
    }
}

採用過濾器和lambda表達式優化:

public class Demo {
    public static void main(String[] args) {
        //創建一個路徑對象
        File f1 = new File("D:\\課件\\就業班\\day07-13\\day08");
        method(f1);


    }

    private static void method(File f1) {
        //進行遍歷
        //調用listFile方法,獲取當前路徑下的文件夾和文件
        File[] files = f1.listFiles((File pathname)-> pathname.toString().toLowerCase().endsWith(".java") || pathname.isDirectory());
         for (File file : files) {
            if (file.isDirectory()) {
                method(file);
            } else {
                //if (file.toString().toLowerCase().endsWith(".java")) {
                    System.out.println(file);
                //}
            }
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章