00:00
好,那我们继续来上课么?上节课呢,我们封装了我们便利目录的函数,那么这节课呢,我们再来看我们统计目录个数,那么统计目录及文件个数怎么来,怎么来做呢?比如说在这里边啊,嗯,大熊这里边,咱们这里边有好多目录,也有好多文件,对不对啊,每个目录,比如说这里边我再给他来一个文件啊,比如就叫A了。好,那你看咱要统计这个目录和文件个数的话啊,那是不是,比如说打开它,打开它以后,然后我来看读对吧?读如果它是目录,那是目录个数加一,如果它是文件,文件个数加一对吧,那是目录的时候,目录是不是还要再去打开对吧?打开再往里面读,读看这里面是目录还是文件,如果是目录,目录再往里面读,那么同样在读的时候,目录个数是不是也同时进行加一操作,对不对?然后这里面也一样,那在读读这里边,比如是目录,那再打开,打开这里面是文件,那文件个数加一,加一完之后是不是读完了,读完以后呢,关闭,关闭以后再往下读,下面是文件,那文件个数再加一,对吧,再反回来。那他再往下读读文件个数加一再返回来,那他读完了再往下读文件个加一再返回来,是不是就完事了,对不对?哎,这是咱们统计这个目录和文件的个数吧,那好了,那咱们来看一下在这里边。
01:06
我们新建一个零三啊,叫做tu。TL-F。杠加啊,统计文件跟目录个数,这里面我们要演示的是。封装啊,统计这个目录及文件个数的函数。函数对吧,比如说在这里边我定义两个变量嘛,来do name am啊等于零零个对吧,到了这个DR也等于零零的对吧,然后呢,接下来我们再定义这个函数function式,比如说叫做嗯,QTL吧,然后括号,然后这里边这里边你在传参的时候要求你干嘛呢?是以引用的形式给我传两个参数,比如说一个fair。Name对吧,然后一个这个呃,引用的一个这个Dollar,呃,File name完事了,还有一个叫做DR,好一个文件个数,一个什么一个这个呃,目录个数对吧,那进来以后。
02:05
还少吧,还少一个什么呀,是不是得给我一个路径啊,来给个路径啊好了,那接下来呢,在这里边。我这没打错吧,来给个按。啊,没问题啊,我们先调用一下看会不会报错,来QTL来在这里边。不行,第一个我再给对吧,第一个,不然他会报错,给个A好了,剩下的东西来再刷新。不是这里边了啊。零四报的什么错,缺少参数对吧,缺少参数的话,因为这个后边我没给,那我给他一个fair来加上一个到name加are name好看这块,我就我觉得这块怎么没变色啊来刷新。OK,没有错对吧,没没有报错了啊好了,那接下来在这里边,那你只要给的东西,我们正常给什么,比如说我要给的是当前的目录大熊对吧,那给了以后进来第一件事干嘛,是不是还是打开。目录对吧,第二件事呢。读取吧。
03:01
还是要读取目录,第三件事是不是还是关闭目录,关闭目录。关闭目录对吧,其实我们所有的目录中操作的逻辑是不是都在读取目录中啊,啊都在读读取目录这一步啊,那打开都都是固定的到了DR。等于open DR这个Dollar pass。丢进来啊,丢进来以后还有关闭目录,那这个CS close DR来,这个到DR丢进来c lo close DR没打错啊,然后接下来是我们的读取,那will循环。Dollar fair name。等于re DR把这个到了Di丢进来,那么在读的时候我们要过滤。点和点点吧,如果到了。费用内一定要过滤点和点点,不然的话它就是什么死死循环了,就死地归了,因为你看我在判断是目录还是文件时候,那个点是不是始终都是目录,那始终都是目录,你进到它里面是不是还是目录。
04:03
对不对,哎,所以这里面一定要过滤的啊,这内如果它不等于点,并且Dollar。不等于点啊,并且到了fair name不等于点点的时候,那这个时候我就开始干嘛,是不是开始来判断了。对吧。啊,这边写错了啊。Ame name啊好了,那。这个时候我来开始判断如果如果什么如果到了um。A。新建卷吧。拼接主角啊,到了。New PH等于什么呀?Dollar pass连接上Dollar fair name。好了,如果这个new pass应该是A-DR啊,到了new pass,如果它是目录的话,那好,我就要目录的个数drum加加加加加加完之后再干嘛,我再来open op,不对,是这个,呃,To。
05:05
PL调用自己调用自己传什么传new pass再传,再传什么传这个。以及到了DR。对吧,那否则的话,否则的话是不是就film name加加film name加加,诶文件数加加好了,那现在这个时候,因为我是用引用的方式传进来了,是不是在外边我直接IO就行了,比如这里边来个目录个数。目录个数是多少?就是这个叫做DR。Am,对吧,然后。B,然后再往上连文件。文件个数,然后再连上谁来上这个Dollar?好了,那现在我们来看,这个时候来刷新,告诉我目录个数是零个,文件个数啊哈,也是零个。那就不对了吧。我以引用的方式传到这里边来,对吧,啊FAM。
06:05
Fell。ILM。没有打错吧,哎,没有啊,那传到这里边来,我最终调用的时候,你看是把它。俩传过来文方式传过来,传过来,只要它俩在这里面发生改变,对应的map是不是就会改变了,对不对,所以在这里边我的A加加。加加完以后,我同样把它又传到了这里面去。C也传到这里面去。这是没有问题的。就哪怕是一层,我们现在把它注册掉啊,不掉递归了,就看一层这两个数能不能改变啊。来刷新是不是也没有改变,那肯定不对吧,因为就算一层的话,我也有什么也有这个数量吧,那这里面怎么没有改变呢?来啊,这块非错了啊,非的name啊。啊,那这个时候再来看啊。
07:00
刷新诶有数了,对吧,你看一层的时候,它有一个目录,有一个有一个文件,有一个一个目录对吧,对吧?来打开大熊的时候,是不是一个目录一个文件,对不对?哎,好了,这个时候再把它递归,再调用起来,再调用自己,只要四目录就调用自己,再进去再刷新来有三个目录四个文件,那咱们来看对不对啊,那先进来以后读大熊,读读的,打开大熊以后,第一个A是不是目录,那目录加一了,对吧,那是目录咱们打开,打开以后B是不是目录,四目录,目录是不是又加一,再打开,打开以后C是不是目录,四目录,四目再加一,好了,三个目录完事,完事以后这个里面是文件。对吧,那文件现在是不是一个,那好了,读完以后这里面没有了关闭,关闭完以后它因为它读完了,我们再读它是不是再读时它是文件,那文件数又加两个了,对吧?那再关闭,关闭完以后,因为这个B也读完了,再读是不是就读它了,那是不是它是文件有三个对吧?那A也读完了,A读完之后再读谁读这个a.T器是不是就四个,所以我这里边三个目录四个文件是不是就统计好了,哎,这就是咱们统计目录个数啊,那么一样统计目录个数也能统计这个文件个数,那么咱们是不是也可以做统计目录大小的功能了。
08:09
对不对,哎,那OK,那这节课我们到这里,下节课我们再来统计目录的大小。
我来说两句