00:00
第12章呢叫做泛行,咱们呢接着来学习第43章叫IO流,这个注意这是IO流,不是石流啊,啊这个是IO的意思,那IOIO这个一说到IO的话呢,你得知道I指的是谁,O指的是谁啊,这也当然也不是这个二进制的一零啊,这个I呢叫input,叫输入啊,O呢叫output,对输出啊,输入输入流啊,这一章呢,主要解决的问题就是涉及到我们文件的一个传输啊,再具体一点讲,就是咱们前面的话呢,在这个存储数据的时候呢,其实都是在内存层面做的一个存储,说呢,我们讲这个项目,包括呢,咱们现在做的这个集合当中的一些题目啊,都是呢,把这个数据呢写到内存里了,那么。GM呢,关掉以后,那我们这个数据呢,就都没有了,呃,包括呢,我们把电脑关了以后呢,也就没有了,现在呢,我们需要把这个数据呢持久化起来,那就需要呢,把内存中的数据呢,我们给它存到一些硬盘上啊,以这种比如说tit啊是吧,有些图片呢叫JPG啊,有些视频呢叫AVIAVI是吧?呃,这个格式结尾的啊,然你把这个数据呢,都得存起来,这呢叫持久化啊,那么这是我们叫输出,这个叫输出,就是从咱们这个内存层面,这个要大家注意,就是咱们占位在内存层面,把这个数据呢,写入到我们这个持久化的层面,需要输出了,那么对应的一个需求就是我们把持久化层面的一些数据再读到咱们内存当中啊,内存当中进来了,我们就可以在程序里边去操作了,啊,这呢就叫一个输入这一张呢,主要解决的就是这个数据的一个输入输出问题啊,输入输出问题,因为这个实际情况。
01:49
它又很复杂,什么叫复杂呢?有的这种文件呢,得用这种这个流啊,是是这种流,有的文件呢是这种流,这个操作的情况呢不一样,所以这张呢,我们会讲很多的流,这里边的话呢,就提到了,像节点流,缓冲流,转换流,输入输出流,打印流,数据流,对象流,随机顺序文件流等等,就是针对于我们操作的这个数据啊,特点不一样,哎,我们呢,就讲这么多的流,这也是我们这一章的主体,哎,这个IO流的这一章的主体啊,那么这个主体呢,说完以后我们还得先上来呢,不是说一上来就说这个流了啊,还得呢,先说一个结构,这个叫fo。
02:30
啊叫file叫文件啊,说为什么要先说它呢,咱们刚才也提到了,说这呢是这个内存了,然后现在呢,咱们需要呢,呃,刚才提到了一个叫点TST这个结尾的一个文件,诶我们呢,把这个数据写到这个文件里,或者说呢,你从这个文件把这个数据呢再读到咱们内存里,那么这呢,你得有一个端点,说从哪读进来,或者说你写出到哪这呢得有一个端点,这个点啊在我们Java层面呢,不都是万事万物皆对象吗?
03:02
那你这个点是一个文件,这个文件呢,在我们Java这个内存层面,我们得拿一个类的对象去充当,这个对象就是file类型的。所以说我们这一个TXT文件,我们就用这个file类的一个对象去充当。那再多说一句,就这个file类的对象不光可以充当一个文件,它还可以表示一个文件目录,就是我们所谓的文件夹。就是文件夹呢,不会说在整个类什么叫directory啊啥的没有啊,就直接呢,也是用file类的一个对象来充当一个文件夹,文件夹里边呢,还可以再有文件夹,还可以再有文件,那就是其他的这些对象了,都是file类型的,所以呢,首先我们关注一下这个file类,它的一个基本使用,这个说完以后,那我们就知道了哦,这个有了端点了,下边呢,我们就可以用一些理由呢去来操作这个文件,你是写出到这个文件里,还是说呢,从这个文件里把内容读进来,就诶讲下边这个事儿了,那首先呢,咱们学习的就是这个file类。
04:06
啊,就是这个file类啊,刚才呢,咱们也提到了,这个file类的话呢,它表示的是具体它的一个对象,表示的就是一个文件,或者是一个文件目录,就是咱们所谓的这个文件夹啊,那我们要熟悉的点的话呢,就是主要关心的啊,就是这个类怎么造对象,这个类呢有哪些常用的方法。主体上就是说的这样的一些内容。那下边的话呢,我们就去新建一个这个包啊,来讲解一下file类的一个使用,这呢,我们再去新建一个叫JAVA3。哎,里边呢,我们再去造一个类,这呢专门来测试一下关于file的一个使用行,这就可以了啊,那我们把这个相应的一些说明信息呢,就写到这儿,这呢首先是关于file类的使用。哎,那么提到了第一个问题啊,首先呢,我们说这个file这个类它的一个对象。
05:03
啊,然后呢,就代表一个文件或一个文件目录啊,这呢就是俗称文件夹。哎,就是这样一个结构啊,那这呢,就是我们讲的这样的一个类啊,那这个类在哪呢?咱们呢,打开API。扎巴。进来file,哎这块呢,就是我们要说的这个类是在IO这个包下的,不管我们这个file类在我们IO这个包下,整个我们这一章呢,要讲的这些流。啊,这些主体的这些流啊,也都在我们这个IO这个包下啊,本身这个IO呢,就是input和output啊,就是来解释啊,或者来这个完成我们数据的一个传输操作的啊,那么咱们讲这一章的话呢,跟咱们前面提到的这个像,比如说多线程啊集合呀,暂且没有任何关系了。暂且没有任何关系了,就是说前面这块呢,比如说还稍微差点意思的,其实不影响你讲啊,不影响你听这个IO啊,这一张啊,昨天没睡好,这个这个集合没整明白,看IO的话呢,照样可以整明白是吧。
06:11
啊,当然呢,这些内容都是基于面向对象的啊,面向对象没整明白这块呢,也有点困难啊,啊这个都是跟面向对象是这个有直接关系的啊行,那这块呢,我们来说明一下,提到了说这个file类,呃,它呢是声明在java.io这个包厢啊。OK,那接下来咱们关注的就是我们如何去获取一个file的实例。如何获取或者叫如何创建啊file类的实例,那这呢,其实自然而然的我们就想到去调用它的构造器去造这个对象了。看test的一个一。行调用构造器,那么这个类的构造器我们可以看一下啊,File打开往下走啊,这是它的属性,不用管构造器啊,在这呢罗列出来了,这里边呢提到了这是一个,哎,这是一个,然后这是一个,下边还有一个这个UI呢,我们还没有讲,所以暂且呢就不考虑它了,先先呢就考虑上边这三个。
07:18
啊,这三个啊,然后同样呢,我把这三个构造器呢,也放到了我的这个PPT当中啊,就是这样的三个构造器,那这三个呢,我们分别的去举一下例子啊行。你看首先我们先声明一个,等于诶去new一个file这样啊,File的话呢,识别不出来al enter指明的就是我们这个IO这个下边的。好,那么首先呢,我们用用一个先用谁呢?我们先用它吧,直接呢,在我们这个行参位置指明你这个文件,或者呢叫文件目录的一个路径。啊,文件或文件目录的一个路径,比如说呢,像我这样的简单写了一个叫hello.tst。
08:04
嗯,光写了一个文件名,那这时候大家可能会关心这个文件名到底在哪个路径下,对,因为本质上咱们这个,嗯,这个这个是我们要考虑真正存在的一个文件啊,在咱们这个Windows系统当中,是不是一定得在某个盘下。对那限量的相对我不是没有写吗。对,咱们把这种写法呢,我称作叫相对路径啊,所以这呢就又提到了一个问题,这是第一个实例化的啊,涉及到构造器,第二个呢叫呃,提到了一个路径,路径呢,咱们刚才写的这种呢,叫相对路径。啊,有一个相对路径,那么还就会有对应的一个叫绝对路径,对比如说你在路上这个开车是吧,这是你的车,这是旁边还有一辆车,说这辆车的话呢,人家时速是80,你这辆车呢,时速是90,你相较于它你的时速只有十啊绝对路径呢,就是相较于地面了,哎,就90啊那对应的这块呢,也类似啊,那相对路径,那大家可能关心的就是此时呢,是相对于谁来说的是吧?啊当前咱们这个哈呢,它呢是啊叫相对于。
09:15
哎,相对于什么呢?咱们当前的这个在咱们这个idea当中就是module了啊,Idea的话就是这个module了啊呃,那么什么意思呢?就是我们这个A08,我在这个下边写的这个file啊,那就是相较于咱们这个module,这个module呢在哪呢?Module呢,我是在这个路径下。我在这个路径下,那yig呢,就是我这个路径下在这个,呃,当然还得在这个D08下哈,在这个下边的话呢,诶我们提到了一个叫hello.tst,相当于是在这个路径下啊,那绝对路径像我们这样呢,你要是完整的写完,说D盘下的哪个位置,哪个下的这呢就叫绝对路径了,那你要表示。
10:03
哎,这个file这个上面叫一。诶,这个我们叫一个二啊,等于U一个还诶这里边的话呢,如果我怎么写呢,就是刚才呢这个说法啊,这样写在这个下边CTRLCL一下,诶我呢粘过来,哎,然后这个下边呢,我们来一个比如说叫嗯黑点啊TT吧,换一个名啊。哎这样写的这种呢,就叫做绝对路径,哎这呢,我们把这描述一下啊,相对对路,相对路径呢,就是相较于哎,相较于哎某个这个路径像哎然后呢,指明的这个路径啊就称作叫相对路径,绝对路径呢,就是包含盘符在内的啊这个路径啊,文件或这个文件目录的一个路径啊行就比较好理解了啊这呢,首先呢,明确这个概念,相对路径和绝对路径,我们这个位置呢,大家可以写成相对路径,也可以写成呢叫绝对路径,OK,这是这个事儿,那这儿呢,我们把这一粘大家看到了,诶怎么出来一个双杠是吧?哎这个双杠的话呢,这是因为啥呢?其实首先呢来讲,在咱们Windows系统当中,它识别的是这样一个杠。
11:25
但是这个杠呢,在咱们这个Windows的Java层面呢,这个有转移的意思是吧,咱不让它转移就是表示一层目录了,所以呢,咱们就得是呃,再用一个这个杠,哎,这样呢,给它不不是表明你后边这个杠勾它是一个转移的意思了啊,就比如说你这个杠后边出现一个N不是换行的意思哈,所以我们得再给他补一个这个杠。诶,是这个意思啊,这里就提到这个不同的文件目录的一个分割符的意思了,那么这呢就又得多说一个事情,在不同的操作系统当中。这个路径分割符啊,稍有区别。
12:02
在咱们这个Windows或者是DOS当中啊,DOS本身也是他们一家的啊,它呢是用这个斜杠来表示的,在咱们这个unix和这个URL,那大家写这个网址的时候呢,咱们用的是这个斜杠,稍微有点区别,咱们现在写俩呢,是因为Java里边呢,避免让它呢表示的是这个转移的啊,所以我们是再加了一个斜杠了,在不同的系统当中,它这个符号呢有点区别,那大家呢,在写的时候呢,你就得注意了,我们在Windows下你得这样写啊,就得这样写,但事实上呢,他其实也支持我们这样的来去写。哎,也可以去识别的。啊,本身咱们这个Java呢,这不也考虑这个跨平台的一个点啊,啊,那你要是呃担心这个事儿的话呢,你就在不同的系统下呢,你不同的写法,那这块呢,Java说了啊说呢避免大家呢,就是在不同平台下去写比较麻烦,所以呢,在file类当中,它提供了专门的一个常量,这个常量呢,就叫做separateator啊CC这个大家呢,可以在我们这个源码中CL shift t先呢找一下,这个叫file。
13:09
进来,然后ctrl o,呃,CTRLV一下找到我们这叫separateator,这是吧,这个separateator的话呢,嗯,你看关于嗯separateator关于它的一个说明,这个你就先看下它了,它在这上面呢,这不就嗯我这点一下放到这吧,这块说明其实就上面这个代码啊。这呢,这不就提到这个问题了,说你在这个Microsoft,在Windows当中,这不得这样写,在unix当中,诶这样写啊这呢大家就不用去在不同的操作系统中,你自己显示的写了,咱们呢可以呢,开发的时候呢,诶你就呃说这是D盘下啊,这个目录下这样一个文件中间呢,你就用这个常量去表示就行。哎,这呢能够使得我们这个代码呢,你在不同的操作系统下呢,都OK啊啊当然这样写呢,稍微看着繁琐一下,不如我们上面这种写法简单,但是呢,它就更通用一些,诶这个大家了解这个事儿就行啊,那现在的话呢,我就不不写的那么费劲了啊,我就直接呢就这样子去写了啊,因为在这个Windows下了啊诶这呢相当于提到第三个问题,就是我们的叫路径分隔符,诶这个路径分割符的一个事情啊,这个呢大家做一个熟悉,哎,在这个Windows下啊,它呢是这样写,呃,Unix下呢,诶这样写啊。
14:31
实际上在咱们这里边,你写成一个unix这种其实也能够识别出来啊,嗯,行,这个呢是我们提到的一种创建这个对象的一种方式啊,就是刚才咱们用的是直接这个file里边你提供这个缀类型啊,这个文件的或者文件目录的一个pass,哎这样就可以了,这呢是第一种方式。啊,那造好以后的话呢,你可以简单的去看一下啊,一来一个FILE2。
15:03
哎,写个FILE1,写个FILE2,那么有的同学会不会担心说现在实际上没有这两个文件吧,没有是吧,没有的话呢,你可能会担心这个时候这会不会异常啊,跑一下看看是没有啊。哎,不管没有,而且呢,它还输出了我们这两个文件呢,它的这个路径就是你的这个行参啊,诶这时候你注意它还不需要呢,去对应硬盘中有这个文件,此时呢,就仅仅是内存层面的一个对象。你还没有涉及到,呃,对这个文件中的数据去删呀,改呀,操作呀,还没有啊,现在呢,就理解成是一个内存层面的对象而已啊,这样好,这呢是我们这个构造器一相当于是啊。那接着举例子,哎,构造七二啊,构造器二这呢,我们再去这个file file来一个三等于new一个,哎,File这样,然后ctrl alt斜杠,除了呢,我们用的第一个之外呢,我们还可以指明第二种,第二种的话呢,它是有两个参数指明你,一个叫词缀类型的叫parent。
16:11
然后再指明你这个child,就相当于我们本质上来讲,这个文件或文件目录表明的是这个child,哎,前面呢,指明你的上一层目录。举个例子,比如说呢,我这样写啊,CTRLC。哎,这样写的,哎,然后逗号一下,在这个下边呢,哎,我提供一个,哎这样。这就我们说的这个第二种方式,相当于我这呢本质上想创建的这个文件,或者指定这个文件,这个文件不是一个具体的点TST啥的文件,它其实是个文件目录了啊,哎,我是在这个路径下,诶指定的是下边它下边的一个叫Java,诶senior页这样的一个文件目录。啊,就是你可以是个文件,也可以是个文件目录啊,我们呢,也简单的去看一下这个三。
17:02
哎,行,那这也是没有问题的啊行,这呢是我们说的这个,呃,第二种这个叫构造器啊fell诶死之类型的叫parent啊pass,哎,然后在string的一个一个child的一个pass,这是构造器二啊,然后接着这个构造器三。哎,FILE3,哎,你有一个file,哎C啊有三了4CL out斜杠,那么第一个第二个第三个,第三个呢,它的参数一叫file类型的,然后后边呢是个child。那前面前面这个呢,是也是在它下边呢,去指定这个文件或文件目录,前面这个呢,也一定是对应的是一个文件目录了哈,那它这呢,不是一个string类型了,而是一个file类型。啊是个file类型,那那比如说咱们就拿这个FILE3,我就放这了,哎,在这个下边我们写一个啊说hi,第2TST。
18:02
那这个三不就是这个吗,相当于在。这个Java senior这个下边呢,我们对应的是一个文件。那我这个L这个FILE4主要呢,指的是这个文件,这个文件的路径呢,是在这个路径下啊。我们再out一下FILE4。哎,这能看这就搞定了啊,就这样,此时的话呢,我们都没有考虑说真实在硬盘当中去存在这样的文件,他们呢,现在就只是内存层面的几个对象而已啊,当我们去这个调它的突死率方法的时候,只是呢,把你这个文件的这个路径帮我们做了一个输出啊,那么这呢,提到了这个三种创建的方式啊,这三种方式呢,后续咱们都有可能用到。啊,所以这块呢,我就把这几个构导器呢,就都给大家讲了一下,大家呢就熟悉一下,后边呢,我们在什么情况下呢,适合用哪个啊,那你就用哪个就OK了。
19:04
啊,注意这两个人是一个词锥形,这是一个哎,File类型就可以了啊这呢是它的一个实例化。
我来说两句