-
IO:(Input Output)是输入输出流
从内存到硬盘就是输出流Output
从硬盘到内存就是输入流InputIO操作的最基础的是文件File
-
File
- 概念:就是java中的一个文件或者文件夹。如果没有后缀就表示是一个文件夹,如果有后缀就表示文件。
- 作用:为了IO流提供操作的基础
- 使用:
-
常量:
1.1. static String pathSeparator
与系统相关的路径分隔符字符,为方便起见,表示为字符串。
1.2. static String separator -
构造方法:
2.1 File(String pathname) 根据文件名创建一个File对象,
pathname:(如果有后缀就是一个文件对象,如果没有后缀会默认为是一个文件夹对象)
1. 相对路径:相对于当前Java类的项目
2. 绝对路径:从根目录或者盘符开始 /都表示从根目录或者盘符开始2.2 File(String parent, String child) 在父级目录下创建一个文件或文件夹
parent:父级目录
child:当前目录或者当前文件2.3 File(File parent, String child) 在父级目录下创建一个文件或文件夹
-
常用方法:
常用方法:获取子文件夹或者子文件方法
-
1.String[] list()获取当前文件夹下所有的子文件夹或者子文件的名 //文件没有下一级
2.File[] listFiles() 获取当前文件夹下所有的子文件夹或者子文件对象=有过滤功能=
3.String[] list(FilenameFilter filter)
获取根据文件名过滤后的文件名
FilenameFilter:文件名过滤器接口
4.File[] listFiles(FilenameFilter filter)
获取根据文件名过滤后的文件对象
FilenameFilter:文件名过滤器接口-----------------------------上面只能根据文件名或者文件夹名过滤,下面的可以通过文件的其他属性过滤,例如:文件大小等-----------------------------
5.File[] listFiles(FileFilter filter)
获取根据文件过滤后的文件对象
FileFilter:文件过滤器接口
-
-
递归:
-
概念:是一种思想,也是一种算法。在方法内部调用自己的方法。(自己干自己)
-
作用:就是简化有相似的业务逻辑(循环)代码。
-
使用规律特点:
- 通过数值带入的方式,查找逻辑规律: 将所有的已知条件写出来
就是有相似运算逻辑的代码 - 通过条件判断(条件/循环)的方式,在满足条件的时候根据规律调用自己的方法。
如果不满足就不会自己的方法,这就是出口
- 通过数值带入的方式,查找逻辑规律: 将所有的已知条件写出来
-
使用场景:
- 树状结构数据、菜单结构、上下级关系等的数据查询
- 有相似逻辑运算的结构
- 适用于层级结构少,数据量小的场景。(最重要)如果层级多,且数据量大用循环。
-
解决了哪些问题:
(1)数据的定义是按递归定义的。(Fibonacci函数:斐波拉契数列)
(2)问题解法按递归算法实现。(汉诺塔问题)
这类问题虽则本身没有明显的递归结构,但用递归求解比迭代求解更简单,如Hanoi问题。
(3)数据的结构形式是按递归定义的。
如二叉树、广义表等,由于结构本身固有的递归特性,则它们的操作可递归地描述。 -
注意事项:
- 递归必须 有出口
- 能用循环用循环,不要用递归,因为效率极其低下。
为什么效率低下?
方法的调用都是创建新栈帧,入栈,而栈层级是有限制的
StackOverflowError : 栈内存溢出错误。
-