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() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。

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