00:00
好,我们继续来上课,那么这节课呢,我们再来去做一下我们统计目录大小的函数啊,来这里里面新建一个PP文件,叫做零五,然后目录的大小叫DRRSIZ加啊,那在这里面一样,我们要做的是。统计目录大小,那咱们说了统计目录大小,目录本身是没有大小的,对吧。这里边目录本身没有大小,目录大小由谁来决定呢?目录的大小是由。里边文件大小决定的。对吧,所以这里边我就相当于统计多个文件的大小,对不对,那来UNC,比如这里边DR。好了括号,那在这里边第一件事还是一样打开目录对吧,第二件事呢,读取目录,第三件事呢,继续是关闭目录,然后呢,这里边你需要干嘛呢?给我一个Dollar pass。Pass啊,给我个pass,然后最后呢,在这里边,在这里面干嘛,我给你吞出去吞一个什么,吞一个这个呃。
01:06
文件大小对吧,所以在这里边,比如打开目录啊,我就fopnf啊不对错了啊是open oppn DR open DR对吧,然后把谁呀,把这个Dollar。DR到了pass是吧,到了pass扔进来,它会给我返回一个,到了DR。然后我们再来关闭。C close DR摆到DR就进来,关闭以后,接下来这里面去读取,对吧?Dollar file name等于red DR读谁呢?读这个DR,那读完以后依然该过滤的,我们还要去过滤对吧?那同样在这里边我们先声明一个Dollar d,不对,是Dollar了,这个大小嘛,To TL吧,啊,等于一个零。啊,或者。Dollar size等于一个零啊,我来声明它,那最后关闭完以后我是不是就return return谁啊,Return Dollar size是不是这样的,哎,关闭完以后我就返回这个这个size,那在这里面我们就开始来判断,如果Dollar name不等于点,并且。
02:04
Name。不等于两点的时候,那么这个时候我就开始拼接新的路径,那就Dollar new pass等于Dollar pass,然后连上一个斜线,再连上Dollar file name,好了,然后我来判断,判断什么呀,判断这个刀了。这个不对,A-DR对吧,谁呢?到了这个pass吧,不对,到了这个这个new pass是吧?New pass是文件还是目录,如果它是文件的话,那我是不是。就要获取它大小了,那也就是到了这个SI是不是就要等于,等于什么等于。Set。对吧,把谁呀,把这个妞帕扎起来,是不是球的大小?对不对,哎,求完大小以后,比如说你现在想啊,如果不走到这个if,只走这是不是就统计这一个文件大小返回来,返回来给size以后,就说是不是这个size了,对吧?那如果走到这里,咱们是调用自己对吗?调用自己的话叫什么叫做这个呃,DR。
03:03
SE把sa传进去,把new判穿进去,这个函数只要一调用它,最后是不是给我返回一个值,返回一个什么值,返回一个size,这个值加价等于这个值啊好了,那这个时候咱们来看。我们来调用dri z把谁呢?把当前目录,大熊这个目录传进来,我们来统计它的大小,它会给我返回对应的size,然后我们再来VR-DP打印这个到了SI这一,那这个时候我们来看啊,来刷新不是这个目录了,换一个。找到零五告诉大家八对吧,那咱们来看一下大熊这里面是八吗?来这里边右键属性。是八字节没错吧,哎,那这个太小了,我们换一个啊,比如说上一集咱们随便找找个17啊,17肯定是大的,对不对,那右键。属性三百五十八三百八十五对吧?哎,那我这些个字节,那好了,我们来统计17啊,那统计17的话呢,这里面的路径我就得给它变换了啊,那把它注释掉。
04:02
CTRLC,我先复制一下,然后再来注释好,注释完以后,这回我们要考虑放的是什么,是不是点点杠,点点杠上一级,上一级叫Les so lesson17这个目录是吧,统计这个目录大小,那这个时候我们再来刷新高多少啊,3895。3895对吗。我们刚才看的是3895吗?来这里边右键。这是三八九四点八三四对吧。这里边。哦哦。我是不是应该也加等于啊,哎,文件大小是不是也加等于啊,对不对,不能光等于啊,那这个时候再来重新刷新,哎,394823那对吗?看一下。对应着他。17这里面属性。394823是不是就对了,哎,那对了,以后同样我是不是要转换什么,转换成这个单位啊,那转换单位的话,我是不是同样需要转换单位的这个函数对吧,叫做转换。
05:02
大小转换函数吧,那f func function,比如叫to SI,那一样,你要给我一个Dollar size,然后呢,我在这里边来定义一个Dollar单位啊,Dollar单位不用定了,在这里面先判断吧,那也就是这个如果,如果什么?如果Dollar size要是大于怎么样?这个呃,Po指数表达式的这个121024的三次方,最后我多给一个,那三次方是不是在GB的范围,那单位就等于GB啊,那同样我的这个sig就要该进行换算了,对吧?那S应该是SI除以,除以什么,是不是除以这个。或直接四舍五入了啊,Rud是状的保留两个小数,那前面就是到了SIZ除以po w,这里边1024的三次方是不是这样的?哎,那好了,那在L4IF,再否则如果到了S要是大于pow。这一个的。
06:01
1024的二次方,那我的单位应该在哪呢?是不是在这个呃,MB的范围对吧?那我到了S就等于round的到了size。除以pow。1024的二次方对吧,然后保留两位小数啊,然后再往后再A3IF。如果到了S要是大于1024的话。对吧,大于大于1024,那我的Dollar单位就等于什么?等于KB,然后Dollar size应该等于什么?等于Lu round Dollar size除以10241024。对吧,然后一样保留两位小数啊,那最后否则到了单位就等于什么,等于BY。P等于一个字节对吧?哎,然后别的不需要算了对吧,那最后我要re什么呀,到了size连上到了单位是不是就可以了?哎,好了,那现在我们再来调用它,比如说这里边to。
07:04
直接输出了啊突。Size把这个size传进来,传进来以后,那现在我们看我们转换的大小是不是三八五点五七对吧?哎跟它是不是也一样的,你看右键点开它的属性是不是385对吧?它只是什么,没有小数,我们留了两个小数对不对,哎,好了,这就是咱们统计目录大小的功能,是不是就搞定了。对吧,哎,把每一个什么大小是不是都让它加到一起了,所有文件大小都它加到一起了,对吧?加完一起以后,这个函数,这个函数最后会返回这个大小,所以只要调函数的时候,是不是用大小接收就行了,哎,那OK,这就是咱们统计目录大小的这个功能啊,那好,那这一课我们到。
我来说两句