Java学习笔记18

本文介绍了Lambda表达式的概念和使用方式,强调其在函数式编程中的重要性,以及在Java中如何简化代码。同时,详细阐述了File类的功能,包括文件和目录的创建、删除、获取信息等操作,以及如何遍历目录和使用过滤器。此外,提到了Lambda表达式在创建FileFilter时的作用,帮助过滤文件。
摘要由CSDN通过智能技术生成

Lambda表达式

面向对象的思想:

做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情

函数式编程思想:

只要能获取到结果,谁去做的,怎么做的都不重要,重视的是结果,不重视过程

标准格式:

由三部分组成:

a.一些参数

b.一个箭头

c.一段代码

格式:

(参数列表) -> {一些重写方法的代码};

解释说明格式:

():接口中抽象方法的参数列表,没有参数,就空着;有参数就写出参数,多个参数使用逗号分隔

->:传递的意思,把参数传递给方法体{}

{}:重写接口的抽象方法的方法体

Lambda表达式:是可推导,可以省略

凡是根据上下文推导出来的内容,都可以省略书写

可以省略的内容:

  1. (参数列表):括号中参数列表的数据类型,可以省略不写

  2. (参数列表):括号中的参数如果只有一个,那么类型和()都可以省略

  3. {一些代码}:如果{}中的代码只有一行,无论是否有返回值,都可以省略({},return,分号)

    注意:要省略{},return,分号必须一起省略

Lambda的使用前提

  1. 使用Lambda必须具有接口,且要求接口中有且仅有一个抽象方法

  2. 使用Lambda必须具有上下文推断

    也就是方法的参数或局部变量类型必须为Lambda对应的接口类型,才能使用Lambda作为该接口的

备注:有且仅有一个抽象方法的接口,称为函数式接口

File类

java.io.File类

文件和目录路径名的抽象表示形式。

java把电脑中的文件和文件夹(目录)封装为了一个File类,我们可以使用File类对文件和文件夹进行操作

我们可以使用File类的方法

创建一个文件/文件夹

删除文件/文件夹

获取文件/文件夹

判断文件/文件夹是否存在

对文件夹进行遍历

获取文件的大小

File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法

重点:记住这三个单词

file:文件

directory:文件夹/目录

path:路径

File类的静态成员变量

static String pathSeparator 与系统有关的路径分隔符,为了方便,它被表示为一个字符串。

路径分隔符 windows:分号; Linux:冒号:

static char pathSeparatorChar 与系统有关的路径分隔符。

static String separator 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。

文件名称分隔符 windows:反斜杠\ Linux:正斜杠:/

static char separatorChar 与系统有关的默认名称分隔符。

绝对路径和相对路径

路径:

绝对路径:是一个完整的路径

以盘符(C:,D:)开始的路径

C:\\a.txt

D:\\backend\\Typora笔记\\Java\\123.txt

相对路径:是一个简化的路径

相对指的是相对于当前项目的根目录

如果使用当前项目的根目录,路径可以简化书写

D:\backend\Typora笔记\Java\123.txt-->简化为:123.txt(可以省略项目的根目录)

注意:

1.路径是不区分大小写

2.路径中的文件名称分隔符windows使用反斜杠,反斜杠是转义字符,两个反斜杠代表一个普通的反斜杠

File类的构造方法

  • File(String pathname)通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。

    参数:

    String pathname:字符串的路径名称

    路径可以是文件结尾,也可以是以文件夹结尾

    路径可以是相对路径,也可以是绝对路径

    路径可以是存在,也可以是不存在

    创建File对象,只是把字符串路径封装为File对象,不考虑路径的真假情况

  • File(String parent, String child)根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。

    参数:把路径分成了两部分

    String parent:父路径

    String child:子路径

    好处:

    父路径和子路径,可以单独书写,使用起来非常灵活;父路径和子路径都可以变化

  • File(File parent, String child)根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。

    参数:把路径分成了两部分

    File parent:父路径

    String child:子路径

    好处:

    父路径和子路径,可以单独书写,使用起来非常灵活;父路径和子路径都可以变化、

    父路径是File类型,可以使用File类的方法对路径进行一些操作,再使用路径创建对象

常用方法

获取功能的方法

  • public String getAbsolutePath() 返回此File的绝对路径名字符串。

    获取构造方法中传递的路径

    无论路径是绝对的还是相对的,getAbsolutePath方法返回的都是绝对路径

  • public String getPath() 将此File转换为一个路径名字符串。

    获取构造方法中传递的路径

    toString方法调用的就是getPath方法

    源码:

     public String toString() {
         return getPath();
     }
  • public String getName() 返回由此File表示的文件或目录的名称。

    获取的就是构造方法传递路径的结尾部分(文件/文件夹)

  • public long length() 返回由此File表示的文件的长度。

    获取的是构造方法指向的文件的大小,以字节为单位

    注意:

    文件夹是没有大小概念的,不能获取文件夹的大小

    如果构造方法中给出的路径不存在,那么length方法返回0

判断功能的方法

  • public boolean exists() 此File表示的文件或目录是否实际存在

  • public boolean isDirectory() 此File表示的是否为目录

  • public boolean isFile() 此File表示的是否为文件

    注意:

    电脑的硬盘中只有文件/文件夹,两个方法是互斥

    这两个方法使用前提,路径必须是存在的,否则都返回false

创建删除功能的方法

  • public boolean createNewFile() 当且仅当具有该名称的文件尚不存在时,创建一个新的空文件

    创建文件的路径和名称在构造方法中给出(构造方法的参数)

    返回值:布尔值

    true:文件不存在,创建文件,返回true

    false:文件存在,不会创建,返回false

    注意:

    1. 此方法只能创建文件,不能创建文件夹

    2. 创建文件的路径必须存在,否则会抛出异常

     public boolean createNewFile() throws IOException

    createNewFile声明抛出了IOException,我们调用这个方法,就必须处理这个异常,要么throws,要么trycatch

  • public boolean delete() 删除此File表示的文件或目录。

    返回值:布尔值

    true:文件/文件夹删除成功,返回true

    false:文件夹中有内容,不会删除返回false;构造方法中路径不存在false

    注意:

    delete方法是直接在硬盘删除文件/文件夹,不走回收站,删除要谨慎

  • public boolean mkdir() 创建由此File表示的目录。

  • public boolean mkdirs() 创建由此File表示的目录,包括所有必需但不存在的父目录。

    创建文件夹的路径和名称在构造方法中给出(构造方法的参数)

    返回值:布尔值

    true:文件夹不存在,创建文件,返回true

    false:文件夹存在,不会创建,返回false;构造方法中给出的路径不存在返回false

    注意:

    1. 此方法只能创建文件夹,不能创建文件

目录的遍历

  • public String[] list() 返回一个字符串数组,表示该File目录中的所有子文件或目录。

    遍历构造方法中给出的目录,会获取目录中所有文件/文件夹的名称,把获取到的多个名称存储到一个String类型的数组中

  • public File[] listFiles() 返回一个File数组,表示该File目录中的所有的子文件或目录。

    遍历构造方法中给出的目录,会获取目录中所有文件/文件夹,把文件/文件夹封装为File对象存储到File数组中

注意:

list方法和listFiles方法遍历的是构造方法中给出的目录

如果构造方法中给出的目录的路径不存在,会抛出空指针异常

如果构造方法中给出的路径不是一个目录,也会抛出空指针异常

递归

递归:方法自己调用自己

分类:

直接递归:方法自身调用自己

间接递归:可以A方法调用B方法,B方法调用C方法,C方法调用A方法

注意事项:

  • 递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出

  • 在递归中虽然有限定条件,但是递归次数不能太多,否则也会发生栈内存溢出

  • 构造方法,禁止递归

    编译报错:构造方法是创建对象使用的,一直递归会导致内存中有无数多给对象,直接编译报错

使用前提:

当调用方法的时候,方法的主体不变,每次调用方法的参数不同,可以使用递归

文件过滤器

File[] listFiles(FileFilter filter)

java.io.FileFilter接口:用于抽象路径名(File对象)的过滤器。

作用:用来过滤文件(File对象)

抽象方法:用来过滤文件的方法

boolean accept(File pathname) 测试指定抽象路径名是否应该包含在某个路径名列表中。

参数:

File pathname:使用listFiles方法遍历目录得到的每一个文件对象

File[] listFiles(FilenameFilter filter)

java.io.FilenameFilter接口:实现此接口的类实例可用于过滤器文件名。

作用:用于过滤文件名称

抽象方法:用来过滤文件的方法

boolean accept(File dir, String name) 测试指定文件是否应该包含在某一文件列表中。

参数:

File dir:构造方法中传递的被遍历的目录

String name:使用listFiles方法遍历目录,获取每一个文件/文件夹的名称

注意:

两个过滤器接口是没有实现类的,需要我们自己写实现类,重写过滤的方法accept,在方法中自己定义过滤的规则

FileFilter过滤器的原理

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

L、fly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值