00:00
接下来呢,我们讲一下这个压缩的实操案例啊,具体的去啊,带大家去玩一把啊。看看这个如何实操的。那首先呢,是这个数据流的压缩和解压缩。是对一个文件进行压缩操作,并且呢,对一个这个已经压缩过的文件进行一个。解压说。首先呃,压缩有两个方法用于。轻松的压缩或压缩数据。第一个,要想对正在被写入的一个输出流的数据进行压缩,我们可以使用create output。将你这个输出流放到这里面去,然后呢,创建一个这个。压缩的输出流。将以压缩模式写入底层的这个。什么意思?是这样的。
01:00
你想?你现在呢,是要进行压缩操作。不管你是压缩还是解压缩,肯定对应着两个流,一个是输入流,一个是。对吧,那你想想你要是压缩。要压缩一个文件,那么原文件它是否是压缩,它是变。原文件是不是肯定是没压缩的,哎,没压缩的,那在这那没压缩的读取一个文件是不是建一个普通的发小音铺的。就完了。是这意思吧,对吧,这几个普通文件,我读你这个里面的字节,不需要任何额外的操作吧,哎,读过来读过来是不是要写到目的地输出。输出如果正常输出的话,就是放到一个out里面就写出了没事了是吧,但是呢,现在呢,是创建的是一个压缩输出流。是不是得对这个流的数据进行压缩呀,哎,那把你拦下来,来了一个压缩输出。也就是说,在你原来普通这个数据输出流传输的道路上,我把你拦下来干什么呢?把你放到一个create out。
02:07
包装了一下。包装成。那我再往外写的话,我这也就变成了压缩的。那输出的文件是不是就变成压缩的了?啊,就这意思啊,所以说这个地方要注意原文件它本身它没有啊。不是被压缩的啊,就是普通的文件,那你就正常的读它就完事了啊。只是写的过程当中,你要写成压缩的。那对不起,普通的理由肯定实现不了。那包装呢,有相应的API,那这个API呢,就是调用create方法里面传一个普通的输出流。他这个流最终返回来的。的压缩输出。那相反。如果想进行这个解压输操作,那掉下来了,它还是一个输入流,一个输出流。
03:00
那你现在的输入流是什么样的?原文件是压缩的还是没压缩的?是不是压缩的原文件啊,哎,压缩的文件。那么现在呢,是压缩的原文件,我对它进行解压缩,那你想想,我要读一个有压缩过格式的一个。件。普通的L能行吗?肯定不行,也就说你这个普通的零读不了,那怎么办呢?哎,来一个解压缩。那我往出输出的时候,我是不是就输出成这个普通的文件啊。我们需要额外处理吗?不需要,哎,那不需要,那就正常的一个out的数据就完事了。所以说这个这个很关键啊,你看原文件是什么类型,那你在处理的过程当中,是否加上这个压缩和压缩它就。那同样道理,你看它这里面也是你要想创建一个这个压缩的啊,解压缩的这个输入流,他就把这个普通流往里一放,返回来的就是。
04:00
是一个具有。的解压缩功能的。这是从理论层面,那下面呢,我们看一下具体的这个实操哈测试。呃,测试呢,我们这里准备了这个三种,呃,压缩方式的一个测试,有个default,有个G,还有一个b to。对应的它的这个class类都在这。下班开始测试。测试一下压缩和压缩啊。说嘛。那首先呢,测试一下这个压缩。
05:08
那压缩的话,你是不是要压缩哪一个文件呢?那是不是首先得有这个输入文件呢。输入文件的那个路径名称,你再给过来啊。那另一个你是不是对这个输入文件采用哪种压缩的方式,你是也得指定。对吧,你是压缩成这个DJ啊,还是这个B度啊等等,那你。那首先这里面要需要传入两个参数,一个就是你这个文件在哪啊,我要压缩谁呢?E盘有一个。哈,点T。压缩这个文件,然后呢。对这个文件采用哪种压缩格式?这个第一个呢,是测试的是b to。对吧,啊,这个class啊,采用这个to这种压缩方式啊。
06:04
对对这个文件进行一个压缩。File name。那这里呢,是一个呃,Class啊,我们这里写一个method。后面呢,要反射要对他进行。啊,房产证,那房产证呢,我先不写啊,我先带大家去看一下这个代码啊。看看是怎么写的啊。拿过来,那首先呢,处理的是这个压缩啊,压缩代码传进来的一个是文件的这个路径和名称,另一个呢是这个类型是。压缩方式。那其实啊,这里面就是一个流的拷贝的过程。你压缩,那还是我刚才说的,你对这个输入文件,你就原文件进行压缩,传输到输出流。那这边呢,原文件呢,就是创建一个。宫的一个输流就OK,这边呢是输出流,输出流的时候呢,只不过在中间要对这个输出流进行一个压缩的。
07:11
看代码。那L0操作,那首先就要获取。然后获取输出流。最后是留的对抗关闭资源。我相信到这个时候,大家对这个套路应该非常非常熟悉,对吧?啊,还是这个套路,那看吧,首先第一个获取数量。是不是就获取一个普通的对这个文件的一个。输就完事了。啊,往这一放就搞定了。那下面第二步是获取。朱出玲,你先创建一个普通的在奥的STEM,往这一放就够。搞定了,只不过呢,这里面哎,在输出文件之后要加一个后缀。这个不难理解吧,啊,加上你是哪一种压缩方式,那我给你加一个它的扩展。是鸡肋吧啊,还是default啊?
08:03
那这个后缀,哎,或许他就有点小麻烦。怎么想麻烦呢?你要想获取这种压缩方式的后缀,那是不是就得跟它有关系?你传进来的是哪种压缩方?那往上推啊,往上推,那过去它怎么样呢?可以通过反射的一个。啊,创建一个对象。那这里面呢,需要传输两个参数,一个是你这个啊,输入的压缩方式的class类。再一个呢,就是你有一个。这个比较简单。那问题在这儿啊。这个不再是plus。那他怎么获取呢?哎。就把这个class。啊,这块反推的过程当中啊,可能会稍微绕一些。这块要注意一下啊。过反射攻击类,创建类对象不在创建对象过程当中呢,需要一个它。啊,那他呢也可以。
09:01
可以通过上面传进来的这个class类。那这一圈读完之后,最终呢,就获取到了。那这也是压缩的这个编码方式。拿到它之后,用它去创建一个真正的具有压缩格式的。普通的数字流放到这里面,那再返回来的。它就是具有压缩功能的。那好,那剩下的事就是留的对口。然后最后是关闭资源。这么一个套路啊,其实整体来说就是四控。不理叔叔流或里叔叔流留的对抗。我们写一下啊。
10:03
过去输出了。的对抗。是不,那第一步呢,是获取输流,就是一个普通的输流。又一个fair眼部的啊,又一个。那这个file呢,就是这个file那。这边呢,对外呢也要抛啊。那这里呢,就是is。输入就有了。输流有了之后,下面呢,我们开始获取它的输出流,又一个file out。STEM。这里面呢,需要一个file。
11:02
那这个file呢,首先呢,还是这个file的名称,只不过在这个名称后面加上了一个扩展后缀。那这个扩展后缀呢,就需要你进一步的一个获取了。能破解呢?有一个。Application。点又一个。通过反射工具类需要一个class,那后面呢是一个。配置信息啊。只不过在得到这个class的时候,那也需要通过反射。Plus。Four nine。家里传进来的,来的。那这样呢,就得到了这个class。
12:04
那这个呢,就可以通过这个。获取他对应的对象。那这个对象呢,他给你返回了一个。不在啊。其实呢,它是具体的一个压缩的方式哈,那这块你需要把它。转换一下叫compress这个接口,那这个对象呢,就是。旋转一下。这块呢,是稍微有点绕啊。他的不染名。写完这之后。嗯。
13:00
稍微停一下,哎,这里面呢,首先呢是获取输流。然后呢,是获取输出流,在获取输出流的过程当中,需要一个它这个编码方式的。后缀的扩展面,比如说比这个图。看看它的扩展名是什么,那要想拿到它怎么办呢?你首先需要通过反射啊这个工具类。想获取这个具体是哪一个编码方式?那这里面正好需要一个class class类,那这个class类呢,正好你可以把它传进来。到这儿之后呢,就可以拿到它,拿到它之后进到这里。那最终呢,就拿到了这种。压缩的。拿到它之后到下面。还没完。你这是一个普通的输出流,这是一个普通的输出流。我刚才说过,你这是输入,这是输出。输入的话,普通的原文件是没有压缩的,那么在往出输出的时候,要求对这个数据进行一个。
14:05
压缩处理。那你这个普通的输出流是满足不了要求的。怎么呢,哎。不带点C。不的。是这将这个S拿出来。包装一下。那这个就变成了。具有压缩功能的输出流,那你说现在目前为止两个流。到位。剩下的事儿就是。宝驾的ious。点。Copy的话选下面这个。输入流,输出流以及这个。缓冲机大小后面还有一个。布尔变量啊。这个呢是Fi保留。那这地方有人出错了,为什么出错呢?好多同学这个out写谁呢?
15:04
还写OS。啊,结果实现不了这种功能哈,这块是写。一定要注意,每个班都有错的啊。张。这个缓冲区多大,你任意设置都行啊。之前我笔记上唱股。参与不都行啊,就是。看看为什么是放什么意思啊来。进来进来之后就是这个参数。Whether or not closed input STEM and output STEM and。你是在最后的时候是否关闭输入流和输出?啊,是这个意思啊啊。那这个地方呢,我们先啊,先不关,在最后的时候自己关。有谁关的,还有。点close。先关输出流啊,这里面先关哪一个输出呢。
16:02
先关cos。它IO close。IPhone OS。最后这关。那这样呢,这个呢,基本就。还是这么四。输入零输出。物流啊。输流呢,只不过这个呢,要将这个普通的输出流变成这种具有压缩格式的输出。然后再往下留着对口。测试一下啊。试一下,看一下E盘有没有这个文件。有它对吧,里面呢是123。能不能吃出效果啊,来吧。变成了这个就有压缩格式的B这个度是吧,那能不能打开呢。
17:04
就这哎,没有任何的影响啊,直接就将它就可以打开了哈。好,那这是这个度,那下面我们再换一个。发现什么呢?这里面是不是有这个鸡肋吧。那继续进行。这个鸡肋吧,来打开。不一样啊。我们再来一个default。那也行。
18:03
那这个能不能打开呢。只是说我这个,我这是什么压缩的。快压是吧,它打不开啊,但是呢,这里面的数据呢,肯定都是正确的啊,一会儿呢,我可以把它再。解压缩出来。不压缩完了吗?啊,下面我马上做的就是解压缩,那这三种方式呢,肯定都是OK的啊,放在这了。
我来说两句