大家好,今天下午琢磨到现在,关于递归方法遍历File的问题

img

为什么在33行代码,判断File之后选择使用递归,然后在调用方法的时候可以正常的输出文件名呀?今天在视频教学里学的

刚学到的知识点,递归!然后教学视频里面学的这一方法,实在是琢磨不透,望有人替我解下这个困惑!不然我今晚,一定孤枕难眠了

你行号没打出来
如果是file,就说明扫描到一个文件,输出文件名
如果是文件夹,则遍历这个文件夹,对于其中的文件和文件夹再做对应操作
有帮助望采纳~

首先,先分析你这段程序的逻辑:
1.用一个名为“F:\360Safe”作为绝对路径创建一个file对象
2.然后以这个file对象作为入参执行getAllFilePath方法

然后我们看看你的这个静态的getAllFilePath方法的执行逻辑是啥:
1.获取入参file对象目录下的所有文件对象数组
2.判断获取到的对象数组是否为空,如果为空,啥都不做,说明此文件目录下没文件或此文件对象指向的不是目录
3.如果不为空,遍历这个数组,对每个文件对象的操作如下:
1)首先判断该文件对象指向的实际文件是否是目录,
如果是目录,则进入此目录获取其中的文件对象重复前面的操作
否则该文件对象指向的是文件,打印出此文件路径。

理解了上面的过程,就清楚很多了,如果再理解不了既可以参照下面的代码,打个断点进行查看:

img


看看实际运行程序时各个对象的内容。

递归就是自己调用自己,直到不满足某个条件为止。