00:02
第四个应用实例,拷贝文件用transfer from,前面我们讲过。大家还记不记得我们在讲通道的时候呢?呃,在讲fair China这个通道时候,我们讲过其中有一个方法叫transfer from,这个方法呢,从目标通道,从复制数据到当前通道。那这样子呢,他也可以完成一个快速的文件拷贝,我们来举这样一个例子。这样一个案例呢,我们准备拷贝一张图片,比如我这有一张图片,然后呢,我们用transfer from一下,就能把这个拷贝的任务完成,我们写段代码。还是在这里打开它。在这儿我们洗。一个文件来验证一下。建一个类叫nero。Five。CHANNEL04。嗯,好。
01:02
下面呢,首先我们还是创建相关的。相关的流。好的。又一个。File。怎么呢,先是一个input吧,读进来,然后呢,待会我们把这个图片咱们放就放在哪里呢,咱们放在D盘,比如说这有个A点击PG。好,产生生成这么一个对象,同样我这简单处理一下,当然你可以用try catch,我这里简单处理一下,因为同学们对Java的IO。这个内容呢,已经很熟悉了,所以说我就简单把异常扔出去就完了,紧接着再来做六一个fire output。那到时间我们把这个文件拷贝到哪里去呢?我又拷贝到A2 a2吧点。JPG。同样,我们也生成一个对象。
02:00
Fire output stream。紧接着我们继续往下来编写,然后呢,获取获取各个。各个流对应的什么呀,Fair channel。没问题吧,就是通道嘛,文件通道。那我们怎么写呢?比如说第一个fair input stream。Guide。这边我们取一个,比如说这次这个流呢,我们换一个名,这个圈呢,我们改一个名叫s ho。SOC source channel。下面呢,改一下名字就可以了,这边用fire output。Output stream得到一个。对应的文件通道取个名字叫DST。Channel。拿到这个过后,下一步呢,我们就一一次性的到位,直接调用,使用什么呢?我们刚才写的transfer。
03:01
From完成拷贝。完成拷贝。不像我们刚才的样子,我们刚才第三个案例呢,稍微麻烦一点,对不对,就是用一个外循环来读取,我们这次呢,一次性的完成,怎么做呢,来直接调用我们DST。点什么呢?对,也就是说把我现在的这个数据往哪去写呢?从这个地方开始拷贝,从硕士。这是我们的语言,从零拷贝多大呢?china.size。对不对,所以这样子呢,我们就把这个source。就是我们这个sources啊,SOS。这一个文件通道对应的数据拷贝到了这个China里面去,那这个China呢,它又跟A2JPG是相对应的,或者是相关联的,那就相当于把这个数据拷贝到了,或者说传输到了a2.jpg,那这个文件就生成了。
04:05
好,就得到,得到了,我们先关闭,关闭相关流。相关的理由。好,我们可以向相关的通道啊,通道河流。你也可以这样关闭一样的,比如说我们这次怎么关闭呢?我们换这种方式来关闭source,先把这个通道关闭。对吧,我们再把dst channel这个关闭。对,再关闭对应的流也可以的,Input关闭。然后呢,把output关闭。好,这样一样的哈,现在我们运行一下,看效果能不能出来,首先呢,我们把这个文件拷贝过去,现在呢,我们找到桌面。这边我们已经有一个图片准备好了。考拉,我就放在D盘吧。给他改个名字叫a.JPG。改个名字哈。
05:00
修改文件名。A。JPG,现在呢,我运行一下。Run一下,那run完过后我们可以看到文件呢,就应该是拷贝过去了,打开它在D盘我们得到一个A2,点击PT看一下就好了,OK,这样呢,拷贝一个文件比刚才要简单一些,但是它底层其实也是做了相关的操作的,只是呢它把它封装起来而已啊,比较简单,好同学们这个呢就是我们使用。Transfer transfer from这个方法完成文件的快速拷贝。好,这个案例呢,我们就给大家讲解到这里。
我来说两句