00:00
好,这个缓冲流呢,我们就讲完了啊,这个缓冲流呢,也是需要大家掌握这个流啊,是这样的,然后这个缓冲流完了以后呢,课后有这个练习题,这呢我放了这三道题,咱们呢简单来看一下啊,第一道说呢,使用这个节点流啊,这呢提到这两个缓冲流,这两个说实现文本文件,图片视频文件的一个复制,比较呢,二者在数据复制方面的一个效率啊,这呢你看我里边写的说这个文本文件了啊,按正常来讲呢,这两个包括这两个他们都处于这个叫字节流。字节流能不能实现文本文件的复制啊,可以对咱们说过了啊,就是你别这个让他读进来以后,在那这个在我们这个程序里边呢,你想转换成字符串去看,别看啊,这个直接呢,你光是从这个文件这块呢,直接给它复制到另外一个文件的位置,这块是没有问题的,所以是OK的啊,只不过呢,说我们建议像文本文件呢,咱们呢就让它以差为单位更合适一些,那我们呢,考虑说用这个字符流来处理啊,实际上呢,他也能做这个事儿,这个呢,咱们其实也演示过了,大家呢下来呢,把这个代码呢去写一写,那第二道题说实现呢,图片的一个加密操作这块呢,诶给了大家的一个提示。
01:12
我们这个图片的话呢,我们都以这个字节的方式呢去读,读的时候我们把这个其中的一个字节读到一个这个B里边,因为它返回值是一个这个这个in特形了啊,所以这呢提示就是定义成个in特型,接着呢,我们让这个in特型的这个数值跟其中的某一个数做了一个异或运算。这其实未运算的一种,相当于就把原有的你这个字节呢就给打乱了,打乱以后这个图片呢,其实就不能够正常显示了,可以理解为呢,就是一个加密操作啊,看着这个挺高大上的,其实呢,我们核心代码就是这个。来,咱把这个呢,简单的写一写啊,其实也不困难,那举个例子,比如说咱们就还是拿这个爱情友情这个图片为例,咱们呢,来写这个小的题目,新建一个包。
02:01
诶,这样练习了一个包这块呢,我们是关于这个图片的一个加密,加密完以后咱们也可以对它进行一个解密啊,诶所以我这就写个picture它的一个测试了,那这呢,我们首先呢,写一个关于叫图片的一个加密。哎,这个呢,我们叫TEST1这样好,这块的话呢,我就使用一下普通的这个首先呢,肯定是用得得用字节流了啊,字节流的话呢,我们处理这个图片,我就不用这个缓冲流了,我就用一个基本的这个file input stream,对来处理啊,包括output stream再给大家写出去,行,那这块呢,我就这样来写了,File先是input stream,诶new一个file input stream这里边呢,我们去new一个file,诶这样子啊,那这里边指明我们这个图片,哎,CTRLC,诶这样子,这样呢,Out enter一下导入,你看这样写啊。
03:04
其实这块呢,我们这样写,你会发现呢,我们这个file input stream啊,它其实还有另外的一个构造器。哎,我们ctrl al斜杠一下,我们可以往里边写一个file,实际上呢,你也可以直接把我们这个文件的路径直接写到这也行。相当于呢,我这呢,其实直接呢,或者我我还演示刚才这个事啊,这不我们是刚才这样写的嘛,那你可以呢,把我们这个new file呢,这个呢直接给它干掉,其实就光保留一下我们这个文件的这个,诶路径也是可以的,那之前呢,我们那样写呢,其实是让大家明白,我们这个呢,其实操作的还是一个文件,只不过呢,这块我们写路径呢,它在里边呢,还是会把这个呃字符串给我们包装成是一个文件的,呃,其实本质上来讲是一样的啊这样写的话呢,就更简洁一些,那对应的我们去再造一个输出的。啊,FOSNU1,还有out to the stream,这呢,我们再给它存放到一个位置上。
04:04
CC,这个这样吧,这个是一个秘密是吧,一个对吧,S瑞行这呢是一个,呃,加密以后的,那怎么做呢?这呢我们提到了,嗯,我们可以给它读进来一个一个的字节,然后呢做一个一会运算,这呢我们就别依次读一个了,这呢演示一次读一个,我们读多个吧,然后再来整一个这个bad的数组。这呢,我们来一个比如20。行,然后int一个啊,Len这样啊,然后while循环,还是len等于FS.read到我们这个B当中。这么着,哎,接着呢,返回它的长度如果不是负一,哎这个我们就进去,诶进去的话呢,原来呢,我们是fos直接的做一个right操作,这呢写一个八,写个零,写一个呢这个L音啊这呢还是原来的你这个数据,现在的话呢,我们这个数据呢,在写之前需要对字节数据进行修改,让他体现这个加密的一个问题,那这里边呢,我们可能会有多个字节,那就得一个一个改,这呢就得写循环了,写循环大家看我循环这样写行不行。
05:34
哎这呢,我们就直接B等于B去抑或上一个,哎这呢我们就还它五吧,哎这呢五因为你是个int型,我们这是个bit型,这抑或完以后呢,是个int型负一个BA,这不合适了,所以我们这做一个强转啊。通过这样的一个循环,我们对这个八分钟的数据呢,做了一个一库运算,问这样写行吗?不行,为什么?
06:03
这个改了吗?没改,对这个咱们前面讲这个增强for的时候,当时还举过这样一个,呃,笔试面试题是吧?哎,我们这里边儿呢,是把这个数据你取完以后呢,付给一个新的变量了,你对新的变量进行修改了,八份数组中的数据没有变。哎,对,这个小心点,我就不演示了啊,大家呢,你下来自己演示一下,知道这样的写法是不行的,这是错误啊,那这呢,我们得写一个正确的,正确的话呢,你得真正去改这个数组元素。所以这块呢,你就用个普通的for吧。哎,小鱼小鱼谁。是不是Lin呢?对啊,就别写那个数组的length了,嗯,在这里边我们呢是8FOR,然后再写个I,这个呢,我们等于还八份。哎,然后他再去抑或上我们这样一个五,哎这个呢,再做一个这样强转。
07:03
行这样啊,这样的话呢,我们就被对这个本身这个字节数组中的每一个位置上的字节来做了一个疑惑运算,就改了它本身上这个数了,接着的话呢,你把改以后的这个数据给它写出去,写出以后我们再做这样的一个资源的关闭。哎,Close一下FS点做一个close,哎,就这么着写。啊,核心的呢,其实就是这块国际啊,诶有这么一个小的操作,然后接下来我们呢,这是一个加密,呃,你把这个代码从这一直到这儿,哎,我们out shift z对,Try catch finally。好摆两个,然后往上提啊,这是一个。这一个啊,然后enter。还这个传开尺。行,那这呢,我们就搞定了啊,Ctrl shiftl f,你们可以调一下这个格式,行这我们就写完了,写完以后呢,我们下边执行一下。
08:09
哎,成功了,成功以后这块呢,就生成了一个这样的文件,这个文件呢,嗯,那问大家一句,你说这个文件和我们这个文件的大小一样不。很多人不一样,大小应该是一样的,对吧,这个直接我们在这看吧。这呢是咱们这个原文件打开。大小跟我们这个加密以后的。嗯,这个呢,其实是没有任何区别的啊啊就看着呢是一样的文件,因为咱们是做易错易货啊,又没加又没少字节的,但是呢,这个你打不开啊,这就相当于做了一个加密操作,不知道它到底是一个什么图片啊,那能加密我们这呢,其实是一个可逆的啊,诶CTRLC一下,我们下边呢还可以对它进行一个解密。
09:03
这个呢,我加一个二解密,那就反过来了,就是这块呢,应该是你上边这个文件啊,CTRLC。放到这儿了,下边这个呢,应该换一个了。啊,这个我们就写一个四吧,那写成个四吧,成嗯,解密下边还改不。你说解密咋解啊?我说还是这样写。是不是还记得咱们当初讲这个异或的时候呢,当时做过一个,说我这有一个M是12,这个N呢,N是五,交换它俩值。当然咱们这个M抑或上这个N,如果你再抑或上的N是不是就回成M了,对当时做过这样的一个小的练习题,那现在的话呢,我们上面呢,加密你一过一个五,我现在呢,得到的结果再移过一个五是不是就回去了,哎,就完事了,就光改下这个位位置就可以了,来测试。
10:04
啊搞定啊搞定以后这个呢,是一个四打开啊,这不就OK吗。这就是一个解密是吧,这个图片呢,就还原回来了啊,其实就是一个小解而已啊,哎,原理呢,清楚了,就是对原有的字节呢做一个调整,哎,就不可读了啊,再调整回去就OK啊行,这是我们这个课后的第二题啊。
我来说两句