00:00
好,我们继续来上课,那么这节课呢,我们再来看一下我们目录相关的操作啊,那么目录相关操作有哪些呢?咱们来看啊。首先什么是目录,你像这就是目录,也就是说我们之前所说的文件夹对吧?那么一个文件夹就是一个目录,那目录里边是不还可以再包含的目录对吧?也就是在文件夹里边,我是不是还可以再创建文件夹啊,对不对,那这就是咱们目录,那目录都有哪些操作呢?来咱们这里边也一样挨个去看一下啊,叫做什么呢?目录叫零一啊。零点。杠。来接吧。啊,也是目录相关的操作,这里面我要给大家介绍的是。目录相关的操作一样,目录相关操作也需要依赖于咱们什么呀?咱们的这个文件系统啊,文件系统提供的这些相关的函数,那么首先第一个我们可以干嘛呢?创建目录,那么创建目录用哪个函数呢?用make DR啊创建一个目录,那创建这里边你就告诉他目录名称,比如说我创建一个什么呢?创建一个这个大熊的目录好了,那他会给我返回一个。
01:03
然后我们来打印这个结果。DP。打印得了,那么这个组我们来看啊。来这里边啊,来下边的零一。下边。LESSON801,好了,你看告诉什么呀?布尔值的出是不是创业成功了?那你看在这里边是不是就多了一个大熊的目录,那问题来了,如果在这里面我再刷新一次呢?比如说咱们看再刷新一次,他告什么呀?他说feel times是不是告我已经存在了?哎,就是不能再创建了,不能创建是不是返回了一个false,哎,那么好,那么咱们在创建目录时候,让大家知道目录里面是可以包含目录了,对不对,也就是说我在创建的时候,能不能这么创建到了re sot等于make drr对吧?比如说我说这个大熊下边我在创建个熊大这个目录,那可不可以呢?那这里边我们再来打印看啊。Dollar result,咱们来看啊,我在这里边已经有了什么,有了一个大熊目录了,对吧,也相当于在这里边是不是在创建一个熊大目录,那在这个时候再来刷新,你看这个时候告什么布尔值的处没问题,对吧?那在这里边是不是多了一个熊大。
02:05
哎,那问题来了,看好了,那在这里边我再创建。Dollar让等于make DR对吧?比如说还是一样,在大型目录下里面我创建一个A目录,A目录下面我创一个B目录,B目录下面我创个C目录,这样可不可以,这是不是也都是目录对吧?那也就是说在这里边咱们来看,我再打印这个呢?好,这个时候我们再来刷新。告什么呀,他说没有这样的文件和目录,对不对?诶,返回一个什么布尔兹的force,也就是说我在创建这个目录的时候,你看好了啊,我是怎么给的这个路径。这里啊,那你看我创建大熊对吧,大熊下面要有个A,那这里面有A吗?没有没创建上来对吧?A里面还要包含着BB,里面是不是还要包含着C。对不对,像这种没有的,也就是说想要连续创建是不行的,我如果创建单一的一个,这是没有问题的,比如说现在大熊目录是已经存在的,对吧,我在大熊的目录下边make DR,比如说直接这样,大熊里边的A,对吧,大熊因为大熊这个目录已经存在了,所以我们直接在里面创建一个A,这是没有问题的,当了。
03:12
注意到。那你看这个时候我们再来刷新一下。走你你看这是没问题的,对吧,如果要是连续的创建,比如说A里边在创建BB里面在创建C,这种连续的是不是就不行了,对不对,那实际上我们在创建目录可不可以这么连续呢?是可以的,你说吧,所以我们想连续的创建目录。创建子目录我需要怎么办呢?需要设置第二个和第三个参数啊,需要设置第二个和第三个参数啊,那make d make DR创建,比如说这里面一样,我要创建什么,比如我在这个大熊目录下面有个AA,下面我创建个BB,下面创个C,这是不是连续的这个B和C啊,对吧?然后给他设置第二个参数叫0777,这是固定的啊,现在你就可以给他记住它是什么呢?在我们现在这个阶段,这是固定的,0777什么意思?表示的是目录的权限啊,权限。
04:03
权限这是表示么?最高权限,最高权限啊好了,然后再往下来呢,那给它设置第三个参数叫什么叫做true,当你设置第三个参数true的时候,才能干嘛,它才能什么连续的创建啊,或者叫做递归的创建,是不是在这里边继续创建,是不是叫递归的创建了,哎,来为DP,我们再来打印Dollar result,这个时候你再来看。刷新诶告不是值处了,那这个时候我们来看在这个A里面是不是多了个BB,里边是不是有C了,对不对,这回是不是连续的创建进来了,哎,这就是咱们创建目录那么一样,当我们创建成功一个目录以后,再次创建它会报错对吗?这里边比如说。这个make DR创建这个当前目录大熊,这是肯定不行的,对吧,我这不接受返回值了啊,直接刷新它是不是报错到目录存在,那这样的话我是不是就可以干嘛判断的去创建,比如说这里面如果如果什么呢?Fair-ES在讲文件时候,我是不是就说过判断文件或目录是否存在吧,判断当前当前目录大熊是否存在,如果存在的话,那怎么办?我就艾O一个叫做目录已经存在,不需要创建对吧?那如果不存在呢?不存在的话,我是不是就是可以在这里边make DR创建,创建谁呀,创建这个当前目录大熊了。
05:17
对不对,那现在我们来看。在这里边再来刷新,诶你看目录已经存在,不需要创建对不对?哎,所以我们在创建目录的时候可以干嘛,可以去判断呢,去创建目录啊好了,这是咱们创建目录,那么能创建完以后,接下来干嘛,接下来我是不是就可以这个删除目录对吧?删除目录吧,那删除目录怎么来删除呢?这里面我们需要用的是什么。叫做呃,RMRMDRRMDR啊,删除谁,我要删除这个大熊的目录,好了,那这个时候他会给我返回一个结果,然后我们再来看这个结果,VR。杠,Dup打印什么呢?打印这个Dollar result,好,我们看他给他删除结果来刷新,告诉我什么,他说这个目录怎么样,Not empty什么意思啊,不为空,看到了吧,说大熊这个目录不为空。
06:07
那大熊这个目录有没有内容,来,咱们来看。大熊里面是包含的A包含了熊大对不对,哎,也就是说这里面只要有内容,它变成什么,它就认为它不为空,那不为空的话。是不是不能删除啊,也就是说我们在删除目录的时候,它只能干嘛,只能。删除一个空目录对不对,哎,就哪怕这里面包含包含任何内容都不行,是不是这个意思,哎,所以这里边比如说我要想删除谁呢,我删除穷大啊,你看刀了。Re,等于RMDR这里边删删掉谁呢?删掉这个熊啊,不对,是大熊下面的这个熊大这个目录,我先把熊大删掉,那咱们看可不可以。到了啊体这样的这个时候。刷新,哎,这个时候布尔值的处对吧,那你再看在大熊这里边还有熊大了吗?没有了吧,是不是只剩ABC了,是不是只剩这样的了,哎,也就是说我们删除目录只能删除最后一个空目录啊,只能删除这么一个空目录啊,所以呢,我们要想做到说你给我一个大型目录,我就直接把你都删掉,那怎么办?那就得自己去洗完成功能了啊,自己完成删除目录的。
07:16
功能啊,就得自己来完成这个功能了啊好,这是咱们的删除目录啊,那删除目录完事以后,你看我们还有什么,还有这个打开关闭读取对吧,这个我们一会儿再说创建删除完事了,对吧?接下来还有什么,比如说我复制目录,移动目录,重命名目录对吧?这些都需要干嘛自己来完成啊,系统中没有给我们提供这样的函数,所以需要干嘛自己。完成。啊,这个也一样需要自己完成,还有这个重命名的自己自己完成,那么通过我们学习我们这个文件的这个移动哈,文件的这个复制重命名,那是不是复制跟重命名是可以用一个函数的,对不对,哎,不是不是复制啊,是移动和重命名啊,然后还有什么呢?再来看判断是否是目录,使用什么使用ADR来判断来,那我们就来判断一下啊,在这里边is down DR来判断谁呢?判断这个当前目录,大熊市目录吗?然后他会给我返回这么一个。
08:15
结果,然后我们来打VR杠,Dup。Dump打印到了result来,这个时候我们来看走,你告什么布尔值的出四目录对吧,那比如说这里边我换一个CTRLCCTRLV啊把它注释掉了,注释掉以后我说这个叫什么,叫做这个DR-C。是吧,01DRFUC,它是目录吗?那这个时候你看再来刷新找放什么false对吧,虽然我没写全,因为它不存在,那写全了才叫存在对不对,那这个时候它是文目录嘛,是不是也是false,因为它是什么是一个文件嘛,哎,这个是咱们判断目录是否存在的功能啊,那好了,那再来看下面还有。这里边啊,还有判断目录是否存在,这个我们已经用了这个判断是否是目录啊,然后这个还有什么呢?统计目录大小啊统计目录,那么这里边也一样,没有这功能需要干嘛自己写自己写啊,那这里面要注意什么?目录呢?它本身是没有大小的,目录的大小是什么呀?是里边文件大小的总和,就是我们目录大小,比如像现在这样的,你看这个大型目录对吧,大型目录里面没有任何的文件,那你说这个目录的大小是多大,是不是零字节看到了吧?如果说在这里边我们去创建任意一个位置啊,我创建一个文件,比如说叫做a.TST,打开它往里面再写的内容好了,那这个时候内容多大它就多大来,你看这里面属性内容多大啊,内容是八个字节对吗?那八个字节这个时候我们再来看熊大的这个目录大小是不是就是八个字节。
09:39
看到没有,哎,所以说目录本身没有大小,目录的大小就是里边文件的大小啊,然后便利目录也需要我们自己去写,还有统计目录中的这个什么个数都需要我们自己去写好,那再来看剩下还有这么几个啊,我们再来给大家介绍返回路径中的什么目录部分。我把这些都拿到我的代码里边来了,哎,拿到代码里边来了啊,然后这里边呢,我们按照头给他,给他注释一下,注释完以后,第一个叫Di name,它是干嘛呢?返回录据中的目录部分,那OK,那在这里边,比如说我们来定义一个str,等于什么呢?等于咱随便。
10:13
在这里面拿一个吧。就这个吧,这是不是就是一个路径啊,Ctrl a ctrl c把它放到这里边来,对吧?那么接下来我们干嘛,我是要返回到这里的目录部分,那d name从这个str里边,它就能给我返回这里边呢,到了DR目录部分,然后呢,我们在这块来打印一下。VAR-dump。打印这个到了D好了,这个时候我们再来看走你你看是不是拿到目录部分了,对不对,那同样能拿到目录部分,也能获取到文件名,通过什么,通过base name啊,那你看在这块也一样啊,我还是用这个内容了,来CTRLC。求V,那最后改一个函数叫做base name对吧?同样我把这个路径扔里面来了啊ame啊,好了,那这个时候我们再来看。走你是不是目录部分是文件名部分是不是就它呀,对不对,哎,那再来还有什么,还有返回路径信息,那返回路径信息也一样啊,这里边会返回一个什么,返回一个数组。
11:11
这数中包含四个元素,那你看这里边我们给它一个叫P。A PH pass啊,然后这个时候我们再来。刷新,你看它返回什么?首先先是我的目录部分对吧?然后是我的文件名部分,然后是我文件名的后缀,然后是我的film name,就是我的文件名,文件名是不是零一,第二杠function对吧?后缀是不是叫PP,那完整的这个名是不是就它,那目录部分是不是就它?哎,这就是返回一个路径的详细信息啊,那这就是我们常用的这些函数,那么接下来剩下的就是什么?我们打开目录,关闭目录,读取目录了吧,对不对?那咱比如说打开目录,关闭目录,我们先来了解一下,读取目录呢,我们再去做的时候,我再来看啊,比如打开,那用什么呢?用这个open drr来打开一个目录,打开什呢?比如说打开当前大熊这个目录,我们有这个目录对吧?然后它会返回一个什么,返回一个资源,注意我是不是又用PP干了跟PP没有关系的事,所以他返回了依然是一个资源,那打开。
12:08
看是不是就一个资源对吧,那么有了这个资源我就可以什么呀,我就可以close CL close DR去关,关谁呢?关这个DR啊,这个叫做关闭目录。关闭目录啊,那再来看刷新没有任何问题对吧?哎,关闭目录我们需要有结果吗?我们不需要对吧?所以在这最上面我们来看open是打开对吧,然后成功返回一个资源,失败后干嘛返回一个false对吧?关闭目录呢?Open DR它是没有返回值对吧?它是由什么?由open DR关闭目录叫close DR啊,它是由open DR打开目录成功返回的这个资源要传到这个参数里边啊,这就是咱们打开关闭剩下干嘛?是不是就是读取了对吧?那读取目录我们下节课再来介绍好了,那这节课我们到这里。
我来说两句