00:00
行,那这呢,我们去新建一个Mo。嗯,这是src新建一个包。哎,这个包下呢,我们下面说明一下这个对象流,哎,我这就捡起了啊,Input output stream,哎,它的一个test。哎,这个呢,在这写叫对象流的使用。哎,对象流的使用,那首先呢,第一个问题,对象流涉及到两个object input stream object,看output,你通过这名字呢,也能看到它俩属于字节流还是字符流,字节吧,看input output stream,这不是字节六吗?这是其一啊,其二作用,哎,作用刚才我们也提到了。
01:04
哎,说呢哎,可以用于找存储或读取基本数据类型或者对象的这个处理中啊,强大之处就是啊,可以把内存中的对象呢,写入到数据源也可以呢还原回来,哎这这样的一个作用啊,行,这个呢需要大家也是理解啊,那么接下来我们就呃提到这里边这个序列化过程和反序列化,反序列化的过程,哎咱们呢,首先先写谁啊对,你得先写个序列化,就是你得先把这个对象存到四盘中,然后再读,哎序列化的这个过程啊,就相当于是将诶内存中的Java对象,然后保存到磁盘中。哎,然后或者呢,来进行网络的传输啊,或者是叫通过网络,哎传输出去。呃,出去啊,暂时呢,咱们还没有讲网络,那我们主要呢,体会的就给它持续化到我们这个磁盘当中。
02:04
OK,这个过程呢叫做序列化过程,我们需要呢去使用object。是不是输出啊。哎,Output stream来实现,哎,使用它来实现,OK,来我们看一下啊,哎,Test object。I out stream。那这呢是我们新的一个module了,我们就得重新的给大家去添加一下单元测试,行,那我们来写这个代码了啊,那首先呢,我们去造一个叫object output stream OS又一个。哎,Object output stream诶,Object output stream ctrl out斜杠,我们这呢是一个处理轴,处理轴呢,是不是就需要包我们现的一个节点轴,哎,所以再去new一个file,哎,Open stream,哎,这里边呢,是就写出到这个文件呗,文件呢你可以去new一个file,或者我们直接呢就写这个文件名啊也可以,这呢,比如我们就写一个叫对象呢,叫object啊,我写object点,嗯,这个呢,有一种文件格式叫data格式的。
03:16
这个呢,其实你写成TST也行啊,TST的话呢,可能会误让人认为呢,说你直接可以打开看啊,这个呢,我就写成个这种格式的吧,啊写成TS其实也行,但都不是让你直接点开看的,嗯,这呢是我们造完的这个对象啊,那接下来呢,我通过这个OS,这个对象呢就可以往外写了,诶你看我们write的时候,大家首先能看到write的很多基本数据类型,这就我们说的了,它也可以用来这个,呃,把内存中的这个在上面写的啊,可以用来读写基本数类型或者是对象啊,基本数类型咱们就过了啊,不说不说它了,这主要呢来说一下这个对象,那我就去write一下object啊,这呢就可以写出对象,这里边比如我们用一个string,那写一个字符串,把这个字符串这个信息呢,我们给它持久化起来。
04:05
比如说这个。我爱北京啊,天安门小学的时候呢,我们就被这样被教育是吧,天安门是非常神圣的啊,所以导致呢,就很多那大家老老家的这个朋友啊亲戚啊,一来北京就必须要去签的是吧,嗯,行嗯,写完以后注意写完以后的话呢,我们进行一个显示的叫flash啊刷新操作啊,刷新操作啊,那刷新操作完以后,其实呢,我们如果呢,你只要持久化一个文件,呃,持久化一个对象,那就算完事了,那完了以后呢,你就把你这个流关闭一下呗。啊,这就算完了啊,那还是咱们以前讲的这三步啊,第一步造流造对象呢,呃,造流造文件呢,我们就写一起了,这个呢是第二步,就是写出的这个过程,哎,这个呢就是第三步,哎,关闭资源的一个过程,哎就这三步。
05:04
这里边儿呢,是一道异常。那其实还是应该TRY开finally对吧?这块咱们还标准一点处理吧,Out shift z,哎,怎么着,然后finally里边啊,If OS,哎,不等于no。哎,把这个呢,扔进去。然后在这啊an out enter,这开始好,这就写完了啊,写完以后呢,我们执行好搞定,搞定以后我们这块呢,就会生成一个文件叫object.data注意啊,这个文件呢,不是让你双击打开看的。你打开看的话呢,你也看不懂。他打不开,他不知道让我用什么打开,我用T打开这样。对,这就不是让你看的啊,就这文件就别想了,像这种格式文件呢,你写出去的不是让你看的,你要想看,你想读是不是得用这个,哎反序列化机制去读啊,哎,这是我们说的这个叫序列化的一个过程,哎下边呢,我们提了个叫反序列化的过程。
06:11
哎,Object叫input,哎,Stream行,这个呢,对于大家来讲应该也OK啊,虽然说没有讲过,但是呢,这个过程咱们说这一章呢,都是比较标准的处理方式,呃,上来呢,我们就直接呢,通过流游的方式啊,给大家提升到一步了,Input stream,然后OIS啊等于new一个object input stream,自然而然的去new一个file input stream,这里边呢,指明我现在要读进来的这个文件,CTRLC。来,放到这儿。再分号一下行,有了这个流了,下边呢,是不是就得读了o is点咱们就去read呗,Read呢,你上面放的是object,我这呢read也就read个object,他认为你是个object,返回的自然而然也是个object。
07:08
啊,是一个obj,当然了,我们知道呢,它其实是个字物创啊,所以呢,你可以做一个强转,哎,在下边我们做一个强转是OK的,就是你得知道你这是一个什么对象啊,通常呢,咱们往里放的话呢,一般也都是同一个类型的对象了,所以呢,你都知道是什么类型的了,那做强转是OK的,那强转完以后呢。啊,又第三步了啊,就o is点做一个close啊,完事,那这块呢,我们把这块包起来,Out shift z try catch finally,然后finally里边在关闭。哎,把这个流呢扔进去,然后。哎,Al enter一下,哎叉开始处理,行,这就完事了啊,那接下来我们去执行。
08:01
啊,执行的时候呢,我忘了out了对吧?啊,要没有看到效果啊。其实呢,我们这个字符串呢,已经读进来了,只不过呢,我没有C槽呢,你没有看到这个效果,这呢就是我们又还原为内存层面的这样的一个字符串了,那此时的话呢,诶其实你应该知道,一开始我们内存当中有一个对象就是我们这个string,这个string的话呢,是内存层面呢,随时可能会被回收,那现在呢,我就可以把它持续化起来,哎,我呢就写入到一个文件里了,嗯,那这个文件的话呢,你是可以持久保存的,当然你也可以把这个文件,或者呢,我不生成文件,直接呢就把这个数据呢,通过网络的方式给它传出去也是OK的啊传出去以后呢,在另外一端啊,我们呢,就可以又给它还原为内存层面的一个字符串,或者说呢,像咱们这里边把这个文件中的持有化的数据再还原为内存中的一个字符串,啊,又回来了,这个过程就叫做。这叫什么呀,反序列化吧,哎,反序列化就是我们上面这样的一个对应过程,上面是内存里边给它,哎持久化了,我们这呢就可以将啊将这个磁盘文件中啊中的这个啊对象还原为。
09:17
那这个内存还原为啊,内存层面的啊,或者叫内存中的啊,一个Java对象。啊或者呢,你也可以是呃,通过这个网络的方式啊,在这个获取到这个流以后,哎,我把这个网络当中的这个流中的这个数据啊,再给你还原为Java层面的一个对象,那也是OK的啊这个呢叫反序列化过程,需要呢使用。哎,使用咱们的叫object input。STEM他们来实现。行这呢我们就算说清楚了,那么这个说清楚以后呢,大家也只能这个直观上去感受一下,哦,确实呢,是可以来传输对象或者呢持久化对象的,因为我这呢明确的用的是一个string,但似乎呢,好像还不是那么明确明显,那我们可以去自定一个类,哎,我们自定一个类呢,把这个对象我们给它序列化和反序列化一下。
我来说两句