00:00
好,我们继续来上课,那么咱们上节课呢,介绍了咱们系统中给咱们提供操作目录的这些函数对吧?但是呢,有很多功能都需要我们自己去写,比如说复制移动重命名对吧?或者是我们在这个呃,便利目录对吧,还有便利目录的时候,统计文件的这个个数和目录个数,哎,这些功能啊,包括统计目录大小啊,这里边好像没有是吧?我把这个要自己写啊,有字呢啊,统计目录大小是不是都是我们需要我们自己去写的对不对,那好了,那我们就以这个便利目录为例啊,所谓的便利目录就是把我的目录都展示到我的页面中,对不对,那么好,咱们来看啊。在这里边我们打开我们的这个新建一个。呃,PP文件叫做零二,我们叫便利。便利。那所谓的便利目录怎么叫便利啊,是不是在这里面,比如说我们就以这个大型目录为例,是不是打开它以后要看看这里边还有什么目录,有什么文件,对吧?如果这是目录,是不是继续打开继续看,这里面是目录继续打开继续看,这是不是就便利目录对吧?所以我们要便利目录第一件事干嘛?我们是不是要打开目录对吧?打开完目录以后,接下来呢,是不是要读取目录了?第二件事读取目录对吧?完事以后第三个是干嘛,是不是关闭目录啊?那打开目录,我们上节课介绍过,系统给提供的函数叫什么?叫做open DR I,然后你要打开哪个目录,比如说打开大熊这个目录,然后它会给我们返回一个这个Dollar DR这么一个结果,这个资源对吧,然后呢,我们可以CS close DR来关闭这个DR好了,那么打开以后,接下来用读读用哪个函数呢,叫做read。
01:27
RA read的DR啊,这就读取一个目录,那么咱比如读谁读这个DR好了,那么他会把读到的这个结果返回给我啊,把读到的这个名字返回给我,那咱们就来看一下我第一次读取目录的时候,他给我返回的是什么东西啊,来打印这个file name。看好了,我一点这个零二贝利,诶,我读了一个什么东西,读了一个点是吗?那点是什么呢?不知道,那我们一会儿再来看啊,反正第一次读是不是读到一个点啊,那好,那我继续再读。
02:03
当我再读这个目录的时候,来。再刷新。点点看到了,是不是读了一个点点,那好,那我再读一次,那是不是就三点了,来CTRLC看是不是这样走你。来重新一下再来保存,诶这个有个什么,有个A,注意在我当前大熊这个目录下边确实有个A目录,没错吧,有在这里面确实是有一个A目录啊,那A目录完事我再读呢。Could you say。走你哎,读到什么,读到是不是一个a.T是不是文件呢,对吧,那读完之后我再读呢。再来CTRLC。你看是什么东西走你诶是不是就放了,也就读完了,那么也就是说大熊这个目录里边默认有四个对吧?第一个是什么是点,第二个是点点,第三个是A,第四个是。a.PSD是不是这样的?那好了,那既然是这样,那我们来看一下这里面都是什么东西啊?
03:03
来你看好了这个点跟这个点点是什么东西,我们先来了解一下,那怎么了解呢?在CMD这里面,我们是不是在在我的什么,在我的这个C盘呢?我们先切换到什么,切换到我们的C盘啊CD一个CCD一个根好了到C盘以后,然后呢,我们来进C盘下面是不是有个WEB64CD,就是进入目录,进入哪个呢?叫ONE64目录下边有个3W3W下面有个online。Online online的下边有一个叫做,呃,忘了来ER就查看这个目录,Online里有一个零一,那CD一个0101进来CD leson lesson18好了,这个时候再来DR查看,查看以后你看在我S18里边有这么多目录,第一个是不是点,第二个是不是点点对吧?那不管它啊,在进入到大熊,你看前面有标注DRR是不是大熊目录啊,那OKCD一个大熊这个目录好了,再来查看这个目录里面的内容,你看当我查看的时候,是不是也是告诉我第一个是点,第二是点点,然后是A,然后是a.TST。
04:03
对不对,是不是总共这四个目录,那么其中这个点代表什么意思呢?点前面标注了是什么?是目录,那是目录,我就CD个点呗,再CD个点,再CD个点,你看你要看我前面这块的路径啊,你看刚才这些路径是他当我CD大熊以后,是不是进到大熊下面去了,对吧?那这里现在是不是一直都在大熊下边,那我图中cd.cd点目录有变化吗?没有,那你代表这个点代表什么意思,这个点代表的是当前目录啊,那点点呢,来CD点点这个目录找你,诶你看谁没了,是不是大熊没了,那我再CD点点谁就没了。LESS18就没了吧,再CD点点零一没了对吧?再CD点点online没了,再CD点点3W没了,再CD点点是不是回到我的根了?哎,那就是点点代表什么呀?是不是代表了上一级目录。所以大家记住,每一个目录下边都有两个看不到的,这个目录叫什么呢?就是不能看不到,叫养隐藏的目录啊。要注意的是,每个目录下都有两个隐藏目录。一个叫。
05:02
点。一个叫点点啊,那么这个点儿代表什么意思,代表的是当前目录。这个点点呢代表什么?代表的是上一级目录啊,所以你切换到点的时候,就始终切换到当前目录,切换到点点的时候呢,就切换到什么,切换到上一级目录了啊,那当我们读完这个目录以后,因为我是这么去读的,读完以后是不是返回false,那这样的话,我是不是就可以循环的去读,对吧?到了few name等于什么,等于re。DR,然后读谁读这个DR,那每次读到以后,我在这里面就直接来干嘛呀,来艾口艾什么IO这个Dollar name,每次输出完以后,我们给他一个什么,给他一个边。好了,那现在我们来看这个数,我是不是一样把这些数据都变得出来了,对吧,那都变出来谁是目录,谁是文件呢?那我们是不是给它区分一下呀,对不对,那怎么区分呢?那我是不是就可以判断一下了。对吧,先别管判断,那我们先来了解第一个问题是什么,你要知道这个A是哪个目录下的a.TS哪个目点,咱是不是得把它路径写全了,是不是都是大学目录下,所以这块我是不是准确的说应该是拼接一个。
06:11
大熊幕下面的文件对吧,这个时候再来,你看这不大熊下面的点,大熊下面点点和大熊下面A,以及大熊下面的a.TST对吧,那这个时候路径全了,我再来开始干嘛做判断啊,比如说。如果。A字杠尖啊,这判的是目落谁?是目落大熊下边的谁呀?高了file name吧,哎,如果它是目录,我这里边就给他艾口一个叫什么是目录,谁是目录呢?就是这里边点杠大熊下边对吧,连上连上谁呢?连上这个Dollar file name,它就是目录对吧,每输出一个我们再给他一个B。好,CTRLC。CRV,然后。这里面再来二否则,否则它就不是目录是什么,是文件了吧,是文件。文件啊,这个是目录。
07:03
好,那现在这个就不要了啊。好吧,那这个时候我们再来看,我做了判断对吧?再来刷新,他告诉我四目录大数下面这个点对吧?四目录大学下面点点,四目录大学下面的A4文件大数下面的a.TST是不是把这目录都变下来了,变了过来了,那变了过来以后接下来还有问题啊,你看如果人家是A目录,既然是目录,咱除了除了这个点跟点点以外啊,如果人家是A目录,那A要是目录的话,目录里面是不是可能再包含着目录对不对,那这里面还是录,目录里面是不是有可能包含目录,那还是目录,目里面是不是还有可能包含着目录,对不对?所以这里面我需要怎么办?我是不是需要的是第一件事干嘛呀?这个点那点点说了我就可以不重要了,对吧,不用它了,所以我可以过滤点和点点对吧,也就说如果什么呀,Dollar field name不等于点并且或者是对并且并且Dollar了。
08:00
F name不等于点点的时候应该是或者吧,哎,这个时候我们才来干嘛才能输出这个内容对吧?那现在你再来看周尼是不是输出了A和a.TST对吧?那再说了,如果A要是目录的话,我是不是还要打开这个目录看一下里面的子目录。对吧,那你看只要这里面四目录注意啊,你看比如说我现在打开大熊对吧,打开以后是不是挨个去读啊,读完以后是不是就关闭啊,对不对?那你想如果读他要是目录,是目录是不是又要打开,打开是不是又要读,读完是不是要关闭,那这里面如果是目录是不是又要打开,打开又要读又要关闭吧?那你看我所谓的这个打开目录,读取目录以及关闭目录,是不是只要遇到目录就需要这三个操作。对不对,那就相当于比如说这块是目录四目录怎么办,接下来我是不是要打开啊。打开目录吧,那打开目录是不是依然是open DR,打开谁呢?打开这个叫做。大熊下边的,大熊下边的谁?大熊下边的这个叫做feel name对吧?哎,打开它以后,他又给我返回了一个这个DR啊,又返回了一个DR或者DR吧啊返回一个DR,然后呢,接下来在这里面干嘛,我是不是还是关闭呃,CS close DR关闭谁关闭这个DR啊。
09:15
DR对吧,然后在这里面干嘛?是不是继续读,那读的话是不是还要判断,还要循环will循环当然了,Feel name e对吧,等于FA读读谁读这个DR对吧?那读完以后,接下来在这里边是不是还要过滤点跟大家点,如果feel name1不等于点,并且这个Dollar few name1不等于什么呀,点点的时候,那这个时候我是不是开始进行输出判断的,判断什么呀?A-DRR对吧,谁呢判断这个叫做。大熊这个目录下边的。Name里边。再斜线连上谁啊,费用NAME1,这是不是它完整路径啊,来判断它是目录,是目录的话我怎么办?是不是又继续打开了,那我就不继续打开了啊,我就直接把它CTRLC输出了啊,我再输出一层。
10:11
输文件的话,我是不是就输出它CTRLC把它放过来,那这个路径在哪呢?是不是在大熊下边file name下边的Dollar。一对吧。这个也一样,是不是在他。再连上一个斜线,再连上非NAME1,因为这里边又是一层,对不对,那现在你看是不是这样的啊,这个时候我们再来刷新你看。是不是AA下面是不是下面有个BB,是不是目录,你看四目录对吧,然后这里边有个文件在,文件是谁,文件是不是大熊下面的,那同样,那比如说我在这个B目录下边啊,我不创建了,我不创建C了啊,我我我再创建个文件叫做asdf,那这个时候你看操心。刷新AA下面的B。哦,走错了啊,应该是谁呀,应该是A里边我在创建一个。
11:05
文件as BF啊,这个时候再来看刷新是不是就读出来了,你看A下面有个as BF是文件A下面有个B4目录对不对,那如果是目录是不是又继续打开,继续打开,继续读,继续写,那你看每只要是只要是我们找到了一个四目录的东西,我是不是就要执行这么几步。看看是不是这么几步,先是干嘛,打开循环的读,然后过滤点跟点点,然后判断对吧,是入式文件是不是这样的,你看我外层是不是也一样啊,来你看。如果是目录对吧,打开目录,打开目录以后干嘛,是不是循环的去读啊对不对,读完以后是不是关闭对吧?读完以后呢,准确说读的时候我要干嘛,要过滤点跟点点,然后开始判断是路径还是目录对不对啊,是目录还是文件,文件我要怎么办?是目录我要怎么办?是目录是不是要继续打开,打开读取再循环再判断。那这样的话,我是不是就可以把这个功能,因为就是需要这么几步嘛,那是不是就可以把这个功能封装一下来,咱们来看啊,在这里边我们新建一个PP文件啊,叫做零三呃f func function杠便利。
12:08
这里边我是不是就可以封装便利目录的函数了,对不对,咱们所谓的便利目录,那比如说这里边啊叫MYDR,你要给我一个这个D对吧,给完我这个D以后,接下来干嘛?接下来第一件事是不是打开,打开打开完之后是不是读取。读取读取完之后是不是关闭,是不是就做这三件事儿关闭吧,那比如打开的时候,在这里面我就是这个刀了,呃。DR等于这块别给DR了,给个pass吧,来。P啊,那Dollar DR等于什么?等于DR内不对,是open DR等于open DR。打开谁呢?打开这个pass,打开完以后,那在这里边我们就开始去关闭它,直接是c close DR关闭谁呢?关闭这个Dollar DR好了,关闭完以后,接下来在这里呢,是就要循环的去读了,哎,到field name就等于re DR DR读谁呢?读这个DR,那么读到这个DR以后,咱们是不是要过滤到这个点跟点点,因为这个它始终都是什么,始终都是目录,所以我对它就没有必要了,对不对?所以这里边我们要干嘛过滤。
13:19
第一件事,二-一就是过滤。点和点点对吧?那也就是说如果Dollar fair name不等于点,并且Dollar fell。内不等于点点的数,这个数我是不是开始进行什么进行判断。是目录还是什么呀,还是文件嘛,但是在判断之前我应该干嘛呢?我应该先拼接一下才对吧。这里边是不是有。拼接。新径为什么拼接新路径?因为这个fair name,我们最终拿到的,比如说读到的目录叫那个目录名叫A,是不是拿到一个A,但实际上这个A应该是什么,是不是应该是不是这样的,你看比如说MYDR,我调这个函数,比如说我传传大胸。
14:09
那你看这个A是不是在大熊这个目录下边对不对,那你就大熊复制给的pass,那最终我是不是要把pass连上来,连接上一个什么,连接上一个斜线,是不是就是pass里面的A,那解析完变量解这个变量被解析完以后,是不就是大熊里面的A对不对?所以我要拼接这个字符串吧,那比如说这个new pass path等于什么呢?就等于Dollar pass连上谁呀?连上Dollar fair name是不是这个意思?对不对,那这个PA后面我再连上一个什么,连上一个斜线呗,啊好了,那这个新路径是不是有了,新路径是不是就是它呀,那接下来我说判断判断什么呀,判断如果这个A-DR新路径Dollar new pass,如果他要是目录的话,那咱说了我是不是还要执行这些这些操作。是不是还要执行这些操作对吧,那执行这些操作我就直接干嘛呀,直接调用自己的my Di把这个new帕子弄进来,对吧,那否则也就是说不是目录呢。
15:06
不是目录是不是是文件了,四文件在这里边,我就来IO一个呗,IO一个文件谁呢?到new pass对吧,输出完以后给他一个BR啊,那如果是目录呢,是目录我也先输出一下对吧,输出一个目录。目录目录完了之后干嘛?到了new pass再来一个B,是不是这样的,哎,然后只要输入完目录以后,接下来是不是就调用自己调用自己是不是一样继续干嘛,继续打开对吧?打开完了之后读取,然后过滤,然后拼接,然后再判断。对不对,哎,那好了,那现在你看我便利目录的功能是不是就出现了来。不是这个页面啊,在我的零三这个页面来,你看首先我大熊里边有A对吧,A里边有什么呢?有个a.TST,然后AB里边有B,然后AB里边有a.TSB里边还有CA对吧?然后在大熊里边有点TST,你看整个这个路径我是不是都读来,那我们按照顺序读一下,看是不是这个过程啊,你看好了反回来。
16:05
先打开大熊对吧,大熊里面是不是有A,第一个大熊里面是不是有A,那A是目录不是是是不是要打开,打开以后,那你看这里面在读的时候是不是有个a. TSt.TST完事以后是不是有B。对吧,那再打开BB里边还有什么,是不是还有一个a.TXT然后这里面是不是还有个C,打开CC里面什么都没有了,对不对,那没有了是不是就关闭了,对吧?那再没有这个读完了是不是这个也关闭了,那再关闭这个完事以后这个是不是还关闭了,关闭现在是不是往出归呢?对吧?那这个A读完了以后,那再读是不是就a.TST,所以他再读的时候就是a. Tst.TST读完以后,那他是不是也关闭,那再关闭是不是就回来了。是不是这个一个结果呀,哎,这就是咱们什么遍历目录的函数啊,好了,那这节课我们就到这里。
我来说两句