java學習day18——Lambda、File

Lambda表達式

函數式編程思想

只要能獲取到結果,誰去做的,怎麼做的都不重要,重視結果,而非過程

冗餘的Runnable代碼

public class Demo01Runnable {
    public static void main(String[] args) {
        // 使用匿名內部類的方式實現多線程
        new Thread(new RunnableImpl(){
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName()+"新的線程創建了");
            }
        }).start();
        // 使用Lambda表達式,實現多線程
        new Thread(()-> {
                System.out.println(Thread.currentThread().getName()+"新的線程創建了");
            }
        ).start();
    }
}

Lambda參數的無參數無返回值表達方法

public interface Cook {
    // 定義無參數無返回值的方法
    public abstract void makeFood();
}
public class Demo02Cook {
    public static void main(String[] args) {
        invokeCook(new Cook() {
            @Override
            public void makeFood() {
                System.out.println("喫飯了");
            }
        });

        invokeCook(() -> {
                System.out.println("喫飯了");
            }
        );
    }
    // 定義一個方法,參數傳遞Cook接口,方法內部調用Cook接口中的方法makeFood
    public static void invokeCook(Cook cook){
        cook.makeFood();
    }
}

有參數有返回值

import java.util.Arrays;

public class Demo03Arrays {
    public static void main(String[] args) {
        Person[] arr = {
                new Person("易烊千璽",19),
                new Person("王源",18),
                new Person("王俊凱",20),
        };
       /* Arrays.sort(arr, new Comparator<Person>() {
            @Override
            public int compare(Person o1, Person o2) {
                return o1.getAge()-o2.getAge();
            }
        });*/

        // 使用Lambda簡化
        Arrays.sort(arr,(Person o1, Person o2)->{
            return o1.getAge()-o2.getAge();
        });
        for (Person person : arr) {
            System.out.println(person);
        }
    }
}

File類

import java.io.File;

/*
java.io.File
文件和目錄路徑名的抽象表示形式
java把電腦中的文件和文件夾(目錄)封裝爲一個File類,我們可以使用File類對文件和文件夾進行操作
我們可以使用File類的方法
    創建、刪除、獲取 文件夾
    判斷文件/文件夾是否存在
    對文件進行遍歷
    獲取文件的大小
File類是一個與系統無關的類,任何的操作系統都可以使用這個類中的方法

重點:記住這三個單詞
    file:文件
    directory:文件夾/目錄
    path:路徑
 */
public class Demo01File {
    public static void main(String[] args) {
        /*
        static String pathSeparator 與系統有關的路徑分隔符,爲了方便,它被表示爲一個字符串。
        static char pathSeparatorChar 與系統有關的路徑分隔符。
        static String separator 與系統有關的默認名稱分隔符,爲了方便,它被表示爲一個字符串。
        static char separatorChar 與系統有關的默認名稱分隔符。

        操作路徑:路徑不能寫死了(服務器可能是linux也可能是windows)
        C:\develop\a\a.txt windows
        C:/develop/a/a.txt linux
        "C:"+File.separator+"develop"+develop+"a"+develop+"a.txt"
         */
        String pathSeparator = File.pathSeparator;
        System.out.println(pathSeparator);//路徑分隔符  Windows:分號  Linux:冒號
        String separator = File.separator;
        System.out.println(separator);//文件名分隔符 Windows:\  linux:/
    }
}

File類的構造方法

/*
路徑:
    絕對路徑
    相對路徑
注意:
    1. 路徑不區分大小寫
    2. 路徑中的文件名分隔符windows使用反斜槓,反斜槓是轉義字符,兩個反斜槓代表一個普通的反斜槓
 */
public class Demo02File {
    public static void main(String[] args) {
        /*
        File類的構造方法
         */
//        show01();
//        show02("c:\\","a.txt");
        show03();
    }
/*
File(File parent, String child)
          根據 parent 抽象路徑名和 child 路徑名字符串創建一個新 File 實例。
 */
    private static void show03() {
        File parent1 = new File("C:\\");
        File file = new File(parent1,"hello.java");
        System.out.println(file);
    }

    /*
    構造方法摘要
    File(String parent, String child)
              根據 parent 路徑名字符串和 child 路徑名字符串創建一個新 File 實例。
    路徑分成了兩部分:父路徑和子路徑
    好處:父路徑和子路徑可以單獨書寫,使用靈活

     */
    private static void show02(String parent,String child) {
        File file = new File(parent,child);
        System.out.println(file);
    }

    /*
    File(String pathname) 通過將給定路徑名字符串轉換爲抽象路徑名來創建一個新 File 實例。
    注意: 路徑可以是以文件結尾,也可以以文件夾結尾
           路徑可以是絕對路徑,也可以是相對路徑
           路徑可以是存在的,也可以是不存在的
           創建File對象,只是把字符串路徑封裝爲File對象,不考慮路徑真假
     */
    private static void show01() {
        File f1 = new File("D:\\研究生\\畢業論文\\論文彙總");
        System.out.println(f1);
    }
}

File類的常用方法

獲取功能:
public String getAbsolutePath() 返回此抽象路徑名的絕對路徑名字符串。
public String getPath() 將此抽象路徑名轉換爲一個路徑名字符串。
public String getName() 返回由此抽象路徑名錶示的文件或目錄的名稱。
public long length() 返回由此抽象路徑名錶示的文件的長度。
判斷功能:
public boolean isDirectory() 測試此抽象路徑名錶示的文件是否是一個目錄。
public boolean isFile() 測試此抽象路徑名錶示的文件是否是一個標準文件。
public boolean exists() 測試此抽象路徑名錶示的文件或目錄是否存在。
創建刪除功能
public boolean createNewFile() 當且僅當不存在具有此抽象路徑名指定名稱的【文件】時,創建一個新的空文件。
public boolean mkdir() 創建單級【文件夾】,可用抽象路徑名
public boolean mkdirs() 創建多級【文件夾】,可用抽象路徑名
public boolean delete() 刪除此抽象路徑名錶示的文件或目錄。 直接在硬盤刪除,不走回收站!
遍歷功能:
public String[] list() 返回一個字符串數組,這些字符串指定此抽象路徑名錶示的目錄中的文件和目錄
public File[] listFiles() 返回一個抽象路徑名數組,這些路徑名錶示此抽象路徑名錶示的目錄中的文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章