00:00
那么再接下来,再接下来的话呢,我们这里边说到这么多瘤,我们就得说一说到底都有哪些流啊,哎,都有哪些流,我们先不着急说,先呢说一下在整个这个瘤的体系当中,涉及到一些最基础的一些类,就像咱们前面讲这个异常的时候,说异常的话呢,这个异常的情况太多了,好多好多的异常类,那咱们呢,就得把握这个本质了啊,先来看一下整个异常的体系,提到了第最初的一个叫throw。对呢,再分成error exception是吧,Exception再去分这个编译时啊,或者运行时啊展开。哎,是这样的一个逻辑,那咱们这块呢,讲到这个流,流这块的话呢,有很多的流。很多的流,大家呢,你可以看咱们这个APIAPI里边咱们呢,之前讲到的一个叫file类了啊,说file类呢,是在我们这个IO这个包下,那么我们的这些流呢,也都在这个包下,打开以后啊,别看接口,你看下边这个具体的class啊,像这里边涉及到呢,绝大部分呢,都是我们讲的这些流了,那这些瘤的话呢,说有没有这个根上的一些瘤啊,还是说油。
01:08
啊,根上的话呢,我们提到了有四个类,Input stream output stream reader和writer这四个类,注意它是抽象类。抽象类抽象类,一说到抽象类,大家第一反应什么呀?对,不能实例化啊,里边一定会有抽象方法吗?不一定,抽象类里不一定有抽样方法啊,哎,当然呢,当然他们会有啊,那为什么要定义成抽象类呢?就是因为呢,我们具体去读或写的时候呢,因为你实际情况太复杂了啊,各种各样的,我们这里边呢,没办法指明到底应该怎么去读,怎么去写,那这些事呢,交给具体的子类去做,我们这儿呢,指定一些比较规范的,到底通呃这个从从这个呃,设计上来讲,我们要想读或写,哎,规范上应该怎么去这个说这些事儿是吧,或者提供哪些功能,我们呢,定义在这个抽象类,当抽象类当中,或者这个负类当中,具体怎么去实施呢,让子类去做,所以父类中的这个方法,我们相应的就都给它抽象化了。
02:14
啊,那这个类呢,自然而然的他们就都是抽象类啊,那么这里需要大家掌握的就是这四个类,我们按照不同的角度去分,你得能够给他安排这个相应的位置啊,比如说这四个类放这儿,我们呢,按照字和字符的这样的一个不同,字节和字符的不同说呢,你俩都是来操作字节的。你俩呢?都是来操作字符的啊,这是按照这个处理单位的不同分的。啊,那再换一个角度,呃,说按照这个流向的不同分成呢,说哎你俩呢是来处理的,这叫输入的。就是从数据从这个文件读到这个内存的,那你俩呢是处理的叫输出的,就从不同的角度呢,大家能够去做一个区分。
03:07
哎,是这样子,那么角色的不同怎么分啊?这没法分了,那就得看它们具体的这些子类了。啊,具体的看此类你到底是节点还是处理流,哎,这四个基本的抽象基类要知道。啊,要知道,因为这个知道以后大家呢,你看接下来咱们去看它的这个具体的这个子类的时候。啊,就会比较清楚啊,刚才呢,我这放了四个叫抽象鸡类啊,从不同的角度呢,大家得能够给它去区分,呃,输入啊输出啊,四级啊,字符啊,这个得知道啊,那这个知道以后,我下边呢,对应的这一趟,像这些类呢,都是集承于他的,下边这些呢,都是集于他的,以此类推。啊,以此类推,那么下边这么多里边呢,咱们典型的这个节点流,就是我们这四个,这是节电流,我一说节电流,你得知道我们是按照哪种角度去分的啊,是不是按照这个角色不同啊,嗯,这四个流他们直接呢,可以来操作一个file,所以呢,我们叫做节点流了,那后续的像这些呢,我们呢,是作用在已有的这些流的基础之上的,你就可以看成叫处理流了。
04:23
可以这样子的啊成那么现在呢,我们想问的一个事儿是什么呢?如果我们随便呢,给大家挑一个流,因为你也知道看这里边API太多了,我随便呢挑个流,大家呢,有应该有一种能力,就是什么呢?你知道这个流,我按照不同的角度去分,它应该是叫什么流。比如说按照输入输出的角度来分,是输入还是输出呢,你会看到它带一个output是吧?哎,这就是输出了,占位的都是我们程序或者内存的角度,那好,它是一个字节还是个字符呢?字节你怎么知道是字己啊,你看啊写着呢是吧?啊这个比较狠哈,嗯,那我这写着呢,你再换个位置,你就没写了是吧?那怎么看呢,是不是看它这个后缀啊,后缀呢,你看叫output,哎,那output stream本身呢,它是一个处理字节的,哎其实这块呢,哎我在一说大家就会发现有个规律,就咱们人呢,就是好多,呃看一些现象的话呢,总爱去总结规律,就像说以前咱们中国这个古人,你看到这个月亮,诶这块是这个小月牙,说呢,过了一段时间呢,就变成圆的了,再过段时间呢,月牙往这边开了,再过段时间又是个月牙,好像有点规律啊。
05:44
啊,然后后来说,哎,出来个叫农历,就是以我们这个月亮这个阴晴圆缺啊去做了一个划分,说这个一天也是一样,哎,一会黑了,一会白了,一会黑了一会白了,这就要一天吧,哎,就找一些规律性的东西哈,那这个呢,这个咱们也可以看看,说这么多,那我们得把握这个本质,大家呢,需要具备一种能力,就是首先你得知道这个流往这一放,你得知道它是输入还是输出,是字节呢,还是字符,对它呢,进行一个简单的分类,这个规律呢,就是大家会发现我们下边写的这样的一些瘤,基本上它的这个后缀啊。
06:17
后缀啊,是不是都是以这四个中的某一个结尾的啊,你随便挑一个这个,这不writer结尾嘛,挑这个input stream结尾啊,这个out stream结尾,那么我们这四个刚才已经说过了,它呢,从不同的角度是什么流已经知道了,那么你后缀带的是谁的,它就对应的是那样的一个特点。像这个一看,这首先是字节的,因为字节呢,它长这样,然后output是输出的啊这个输出的,然后呢,是一个操作字符的吧。因为它俩是不是都操作字符的,哎,对,那所以说呢,大家呢,你把这四个这四个抽样机类,虽然说咱们开发中不用啊,但开发中呢,因为你抽象类呢,肯定不会拿它们去实例化了,不用,但是呢,你把这四个呢,它呢从呃数据单位的不同,还有这个呃流向的不同呢,一定要记住它是一个什么流,那接着的话呢,你看到任何一个流啊,你就知道呢,它应该是一个字节还是个字符,是一个输入还是个输出啊就能明确下来。
07:32
啊,这是一个小的技巧啊,这呢我们就把握这个本质了啊行,那么接下来再要说的话呢,这么多的这个呃此类了啊那我们到底关注哪些呢?肯定他们的这个具体的功能作用是不一样的了啊关注哪些呢?需要关注的呢,我这块呢,都给你加了这个蓝框了,深色的这个啊那这有这四个,哎,这四个这两个,这两个。这个重要的呢,这块呢,都给你标识出来了,那当然我们这一章除了讲这些之外呢,还会讲其他的一些流,那么重心首先呢,大家先要关注这个,这四个呢,咱们刚才说了,他们属于最基本的来操作一个文件的,叫做节点流来,我们先把这四个讲了,哎,讲完以后的话呢,我们再说这个其他的一些处理流了啊,那我们再说这四个,再说这两个,哎,再说这两个啊,还有其他的一些,那么从重要性上来讲,这是第一档的,然后呢,这块呢,其实也可以看成是第一档了啊,只不过呢,就是我们以这四个为例,咱们又提到一个事儿,就是输入输出它是比较标准的,只要是读入都是read,只要输出呢都是right,我们以它这四个为例,把这个基本的输入输出说清楚以后,后续的讲这些理由,大家主要就关注他们的功能到底是干什么的,具体的实施方面呢,跟这些企业的逻辑呢非常像。
08:55
非常像,所以这张呢,你可以说代码量呢好像不少,但是呢,一总结发现啊,操作起来这个套路基本是一致的啊,以这四个为例,先说清楚这个输入输出这个套路是什么,然后呢,下边这些所谓的重点,大家就关注这些流区别于它这些流到底是干什么的,什么时候呢,我会用到这些流,怎么用,那又是这个套路啊就可以了,把握我们这个问题的本质啊行,那这个呢,咱们就说清楚了啊,那说明以后呢,咱们把刚才这个事儿呢,再给大家去写出来啊,写到咱们这个具体的model里边,同时呢,大家也回忆一下啊,这呢,我们这个叫DAY09。
09:38
哎,这块src去新建一个猫这个这个盆啊package。这里边咱们再去写一个具体的class啊,这块我就先写上啊,叫file read的一个test。这块呢,咱们先把刚才描述的这样一些事情呢,重要的啊,在这呢,这个写出来,第一个咱们落地需要大家关注的就是呃,流的一个分类,好回忆一下啊,第一个按照操作数据,操作数据单位不同分成字节流,字符流,第二个按照呢,这个叫数据的流向。
10:24
哎,输入流输出流是吧,哎,第三个按照叫流的这个叫角色,角色吧,角色角色也行,正经应该念角色啊,哎,分成叫节点零和处理流行,这是我们说的第一个事啊,第二事,第二是呢,我们提到整个这个叫流的一个体系结构啊,T里边呢,我们提到四个比较基本的叫抽象基类,就抽象类啊,基类的意思就是说最基本的这几个有叫input stream output stream reader writer,这是几个抽象的鸡肋,然后呢,我们首先呢讲的话呢,先讲到它们四个的比较基本的一个节电流啊,这呢,我就写到这个档啊,叫节电流直接呢来操作文件的。
11:24
啊,继承于我们input stream的呢,我们叫做input stream,那然后这块fair output stream file reader file write,哎,其实呢,虽然说这个类呢比较长,但是大家呢,发现有规律,只要呢,在你这四个前面加一个file就行了。所以呢,这个四个节点流呢,我们也经常呢,大家你看一些书或者帖子的时候呢,也会把它们称作呢,叫做文件流,很多的概念啊,这个这个稍微注意一下,文件流文件流就是因为呢,你看它前面这个都叫就指明呢,相当于这些流是不是可以直接来操作一个file啊,哎,所以就叫做文件流了,哎直接来操作文件呢,咱们不也叫做节电流嘛,哎就这意思啊,那这呢是这四个,然后呢,呃,接下来呢,我们再要讲呢,就是属于处理流了,其中呢,有一种比较典型的处理流,我们称作叫缓冲流,缓冲流就是咱们讲完这四个节点流以后,咱们就要讲这个叫缓冲流了,这个缓冲流的话呢,是属于处理流的一种,哎,这个处理流有很多种,咱们呢,先讲的是这个缓冲流,那么缓冲流哎,是作用在已有的这些流的基础之上的,那我作用在它上面的这个呢。
12:51
我们举个例子啊,就叫做buffer啊,叫input stream,哎,然后呢,哎,作用在我们这个far output stream上面的叫buffer,哎,Output,哎,Stream,那作用在咱们这个这个上面的呢,都能猜到了是吧?八份的reader,哎,八的writetter,哎这呢就是我们要讲的这个缓冲流,就这四个分别呢,就是作用在我们对应左边这样一个结构,在它上面呢,再包一层。
13:31
啊这样的一个情况,好,这呢是整个咱们这样的一个体系结构和流的分类,这两块内容需要大家,哎落地呢,你能记得住啊,啊这里呢太多了,你得把握我们这个本质啊,把握这个本质。
我来说两句