00:01
来来,同学们啊,咱们接下来继续再往下,我们上节课呢,其实是把这个昨天的这个作业呢,说了一下啊,就是关于目录的一个复制,那么这个目录复制的这个事儿呢,大家呢,下去之后呢,尽可能去理解吧,啊,因为这个里边有一个递归。啊,有个递归,呃,那么对于程序员来说,可能递归本身这个东西啊,可能不是很好理解。啊,所以说这块呢,可能这个代码一下看着感觉有点难度哈。这个可能还是还是这个。写代码太少啊导致的。没关系,咱们慢慢积累就好了,不用太着急啊,不用太着急,那行了,那咱们接着看啊,咱们这个IO这块还剩什么东西啊,还有哪些东西。我们把这个打开,把这个打开,把这个打开啊,把这个打开。对,32的一个课堂笔记啊。
01:01
嗯。来对32课堂笔记第32个工作日了,各位啊,那么咱们很快加va一次结束之后呢,我们就看数据库了啊。来这块的话,咱们首先第一个是拷贝目录啊,这个我们上节课已经说过了是吧?啊拷贝目录,然后再往下的话,我们还有一个什么呢,就是关于什么呢?关于这个。刚才这个构在构造方法这块说了啊,这个file input stream里边是可以跟,除了这个跟路径之外可以跟啊,我在这里提一下吧,啊,再提一下。然后呢,除了这个之外呢,大家这个file output stream。Fire out the是不是也可以跟一个file啊?对吧,啊也可以跟一个啊是没问题的。然后呢,包括我们之前讲过的这个file reader啊,还file writer啊,是不是看这个构造方法,它需不需要能不能传个file进去。都可以吧,哎,大家注意一下就可以了啊,那么IO流这块呢,还有一个就是关于什么呀,关于对象流。
02:09
谁呢?这个object input streamam和这个object什么呀,Outputream啊。这两个我们得看一下。来。那这块呢,我们去新建一个class,各位啊,这个class我们叫object output stream。零一啊,Object output stream test,零一啊,来,Finish。找一个。嗯,那这块呢,咱们在说这个object output stream和object input stream之前呢,我觉得有必要去画一个图。画个图啊,咱们。来,我们写上叫得32。叫做对象的。
03:02
序列化和反序列化。在对象的序列化和反序列化。什么意思呢?假如说这个呢,是我们想象当中的一个内存。各位啊,这是内存。啊,我们想象当中的内存啊。然后呢,这个呢,是我们想象当中的这个硬盘文件。写这吧,啊硬盘文件,那么现在在内存当中呢,有一个Java对象。各位啊,有个加法对象,假如这就是那个加法对象吧。啊。这就是那个Java对象。那么这个价格对象当中呢,有数据,有信息。明白吧,这里呢,有相关的数据,相关的信息。数据信息啊,然后呢,我们如果说大家知道这个这个电脑一关机啊,它这个加入对象呢,它这个内存就就没了。
04:06
是不是,那么有没有这种需求呢?说我们可以把我们内存当中的这个Java对象。给他干啥呀,给他放到这个硬盘的文件当中呢,有没有这种技术呢?哎,是有的啊,是有的。那么我们把Java对象放到我们的文件上,这个过程我们称为什么呀?叫做序列化。称为序列化,各位啊,叫序列化。明白吧,哎,实际上是怎么做呀,他是这样做的,各位啊。他把这个对象呢,通过网络或者是管道的方式传到这个文件上。是不是,哎,这个过程我们叫序列化,它为什么叫序列化呢。他把这个对象啊。切成一块一块的。因为有可能这个对象太大,他不可能在网络当中一下叭就传过去了。
05:01
是不是在网络里边传的都是一个一个小的数据包?所以这个时候呢,它会把这个内存当中的对象呢,给它,哎切成一块一块的对吧,哎,你比如说这是一块。拿过来。放到这个文件当中,然后给他编个号是几啊,哎,是一。啊,然后紧接着呢,再往下怎么着啊,哎,把这块的拿过来。明白吧,拿过来。通过网络啊,这是在网络当中传输,传输一个对吧,哎,再拿过来。这是什么呀?哎,这个是给它编个号对吧,序列化嘛,对吧,二啊,然后接下来呢。我们再往下对吧,哎,继续走。这啊,我来个大点的,大点的。
06:01
拿过来。那给他编个号对吧,三号。然后呢,再把。这个拿过来。放到我们的这个地方。啊,给他编个号放到文件里边。啊,放到文件当中,那么这个过程呢。我们叫做什么呢?叫做。序列化。来,我换个颜色啊。这个过程我们叫做序列化。啊。序列化。字体小一点。序列。那么。我们把我们内存当中的这个Java对象放到我们硬盘文件当中,实际上在网络当中传输的时候,它需要把这个对象切成像切豆腐一样,切成一块一块,然后给每块编上编号,通过网络传送的方式传到我们文件上,然后呢,从此往后呢,它一直存在我们的文件当中。
07:13
这个叫序列化,各位啊,那有一天呢,有可能我们需要把硬盘文件当中的这个存的这个加班对象反序列化到我们的内存当中,所以它还可以从我们硬盘文件再恢复到我们的内存当中,各位,那么这个过程呢,我们叫什么呢?哎,叫做什么呀?反序列化,各位啊,这叫反序列化。你先把这个序列化和反序列化能听懂啊,当它反序列化过程当中呢,因为每一块它都有编号,1234对吧?啊有这样的编号,所以这个时候呢,我们在组在这个内存当中,再去重新组装这个对象的时候,我们就知道该怎么组装了,因为它上面有1234这样的一个什么呀,哎,编号。这样的话就可以反绝对化回来了。
08:02
序列化就是给它排好队,切成一块一块的给它放到文件当中,这叫序列化,然后反句话是把硬盘文件当中一块一块的东西拿到内存里边,再去组装成一个对象。啊,这个序列化呢,可以理解成是一个拆分对象的过程。而这个呢,反驱动画质是什么呀?是一个组装对象。对,一个是拆分,一个是组装。你可以这样去理解啊,可以这样去理解,那么序列化呢,它有一个英语单词,大家需要注意一下。化有个叫S。啊,反序列化呢,有个单词叫。啊,一个叫序列化,一个叫反序列化啊序列化指的是Java对象。
09:05
存储到什么文件中?将Java对象的状态保存下来。啊,将加码对象的状态保存下来的过程。反序列化呢?反序列化是指将什么呀?指将硬盘上的。对吧,哎,数据重新恢复到。内存当中。啊,恢复成加入对象。S。啊,序列化和反序列化。那么如果你需要序列化的话,你就需要使用到一个类叫object,什么output stream。
10:04
这个object output就是负责序列化的。那么你如果需要反序列化的话,你需要使用一个类型叫object input stream。这个类它是负责反序列化的。明白吧,这是这两个类的一个使用,它比较特殊,它可以把你内存当中的一个user对象,假如说你是个用户对象,我想把你的用户对象呢,给它放到持久化起来,给它保存起来,永久性的保存起来,断电之后,对吧,哎,我这个状态还在。是不是,哎,等下一次呢,我再重启电脑的时候,我再重新把硬盘上的这个对象给它恢复到我们的内存当中,比如说我们呢,在电这个电子商务,呃,网站上,比如说我们的京东商城。是不是我们去购物?大家都知道购物呢,它有一个什么过程,叫做购物车,是不是购物车里面放了很多什么商品?
11:04
是不是,哎,那么有没有可能有这种情况呢?就是说我今天登录的这个这个这个京东商城之后,我在我在购物,往购物车里面放了很多很多东西,是不是,然后突然有一哥们给我打电话说,哎,说老杜啊,你出去咱们出去喝喝点啊,哎,那我就出去了,我当时我可能这个这个这个没有结账。明白吧,哎,购物车里边商品还在啊,没有结账,那如果我两个小时三个小时之内没有在京东商城上操作,那么京东商城会认为我已经离开电脑了,所以这个时候京东商城可能有可能把这个购物车这个对象,它里边放的这个商品全部给我们冻结起来。等下一次我们再登录京东商城之后啊,我们会发现怎么着啊哎。这个商品怎么着,诶,又重新恢复到我们的内存当中了,是不是等于下一次再登录的时候,它会显示出你上一次没有结账的这些商品,它会给你重新显示来,在购物车里边。
12:00
是不是其实这个操作就可以采用什么呀,我们的序列化和反序列化的方式去完成。啊,我不知道大家理解不理解这个意思,购物车呢,有可能是一个Java对象,它有可能这个Java对象是一个集合,集合里边放了很多商品,是不是,然后把购物车呢,怎么着啊,这个对象放到我们硬盘文件上,下一次再登录上去之后呢,我们可以从硬盘文件中重新序列化回来。是不是哎,反区的化回来就是这样的啊,了解一下啊,当然这种方式呢,我们可能现在很少用啊,因为现在有数据库,是不是啊,有有数据库,我只是在那举个例子,各位啊,举个例子。好了,大家理解这意思啊,就是反序列化和序列化是有用的啊,是有用的。哼。
我来说两句