一,stream流
1.stream流:是JDK8开始新增的一套API,可以用于操作集合或者数组的数据
2.优势:stream流大量结合了lambda表达式语法风格编程,提供更强大更简单的方式操作集合或者数组的数据
3.使用步骤
(1)获取流
①Collection集合:stream()
②数组:Arrays.stream()或者stream.of()
③扩展
Ⅰ:Map集合不能获取流
Ⅱ:Map集合只能用键获取流,或者用值获取流,或者用键值对获取流
(2)操作流
①中间方法:返回值是一个新的Stream流对象(可以继续调用Stream的方法,支持链式编程)
②注意:一个流对象只能使用一次,流操作之后会产生新的流,再次使用原来的流会报错
(3)终结流
①操作方法
Ⅰ遍历:forEach()
Ⅱ统计个数:count()
Ⅲ获取最大值:max()
Ⅳ获取最小值:min()
②收集方法
Ⅰ收集到集合:collect()
Ⅱ收集到数组:toArray()
二,File类
1.File就是java.io包下的类,File类的对象,用于表示当前操作系统的文件
2.路径
(1)绝对路径:以盘符开始的完整路径
(2)相对路径:相对于项目的当前路径
3.注意事项
(1)File类只能对文件本身进行操作,不能读写文件里面存储的数据
(2)File类对象既可以表示文件,也可以表示文件夹
(3)File封装的对象仅仅是一个路径名,这个路径可以是存在的,也允许是不存在的
4.常用方法
(1)获取文件信息
①获取名称:getName()
②获取文件大小,返回字节个数:length()
③获取文件最后修改时间:lastModified()
④获取创建文件对象时使用的路径:getPath()
⑤获取文件的绝对路径:getAbsolutePath()
(2)判断文件类型
①判断文件对象对应的路径是否存在:exists()
②判断文件对象是否是文件:isFile()
③判断文件对象是否是文件夹:isDirectory()
(3)创建,删除文件
①创建一个新的文件:createNewFile()
②创建一级文件夹:mkdir()
③创建多级文件夹:mkdirs()
④删除文件(默认只能删除文件和空文件夹,删除后的文件不会进回收站):delete()
(4)遍历文件夹
①获取当前目录下的所有一级文件名称到一个字符串数组:list()
②获取当前目录下的所有一级文件对象到一个文件对象数组中:listFiles()
③使用listFiles方法的注意事项
Ⅰ:当主调是文件,或者路径不存在时,返回null
Ⅱ:当主调是空文件夹时,返回一个长度为0的数组
Ⅲ:当主调是一个文件夹,且里面有隐藏文件时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件
Ⅳ:当主调是一个文件夹,但是没有权限访问该文件夹时,返回null
三,递归
1.递归是一种算法,从形式上说,方法调用自身的形式称为方法递归
2.递归形式
(1)直接递归:方法自己调用自己
(2)间接递归:方法调用其他方法,其他方法又回调方法自己