00:01
嗯,行了,大家刷新下浏览器就行了啊行,那咱们就注意听课了,咱们注意注意咱们的一个课程啊,来咱们看一看,今天上午咱们是说到哪了,嗯,上午呢,我们是写了这么几个例子是吧?写了12345个例子,然后outp写例子。那么这个file input stream的这块是读是不是,哎,用一个文件字节输入流去读。对吧?哎,New,一个file in the stream,然后呢,准备一个bad数组往里边读就行了,调用read方法往bad数组当中读,然后呢,转换成字符串是不是?哎,那么我们在file out put streamam这一块怎么着啊,我们也写了一个例子,对不对?哎,这个例子呢,是输出。啊,是输出,然后呢,这个file out put stream,这个方法有两个参数,第一个参数是呢,是我们文件的一个名字,第二个参数呢,是是否以追加的方式写入。啊,那么这个呢,我们说过了,如果文件不存在,它会新建对吧,如果这个参数你要是不加的话,它默认是怎么着啊,哎,是默认是把原文件的内容先给它清空对吧?来重新写入。
01:11
啊,是这样的,那么我们这个file input stream和file out put stream这两个我们都已经说完了,对吧,说完之后呢,我们接下来能不能做文件的复制了呢?假如说现在我要做一个复制。我应该怎么去实现呢?那什么意思,咱们举个例子啊,举个例子,比如说现在啊,在这个下边。啊,在D盘的cos下边有一个什么呀,零二加YZ有一个video视频是吧,比如说第一章里边就有视频对吧,我把这个视频拷贝到我拷贝到C盘下。我怎么拷贝啊。对吧,哎,这是D盘,我拷贝到C盘下。怎么拷贝呢?来我们文件的拷贝啊,它的一个原理我们来看一下。这31叫文件的复制原理。
02:06
那假如说现在呢,在这个地方是我们的一个叫做地盘。那么这个D盘呢,它有一个文件,我要干什么呀,我拷到C盘下。这是我的C盘。啊,在D盘当中呢,我有一个文件,比如叫1.avi。是吧,哎,有这么一个视频文件,我要把这个文件干什么呢?哎,拷贝到什么呢?我的C盘下,那你说是直接一下就这样过去了。硬盘就直接硬盘吧,就过去了,是这意思吗?这个。这样就过去了吗?不是吧,实际上呢,在中间我们有一个所谓的什么叫内存是不是,哎,从D盘到C盘,它要经过内存的。内存。那么这块呢,咱们有可能要把这个文件呢,我们需要先读到我们的内存当中。
03:03
是不是,哎这个过程呢,我们叫做输入吧,因为到内存里边去呀,叫输入吧,哎输入。然后呢,这边呢,是。输入这个文件,然后呢,我们把这个内存当中的数据再写到我们的磁盘当中。是不是还得写进去?来,那这个呢,我们叫什么呀。当然我们叫做输出了,因为从内存里面出来呀。对吧,哎,这个叫做输入,这个叫做输出。啊,叫做输出。输入输出。那么这个输入输出啊,肯定是一点一点来的,他肯定不可能说这个文件,假如一个G的文件,对吧,吧嗒一下。过去了。是不是CTRL加C好像输入。来CTRLC是复制。复制啊。
04:00
复制这个输入,怎么说呢,它并不是输入了。它不是一下全放到内存里边的啊,它是一点一点来的。啊,他是一边读一边写,这个过程呢,我们称为什么呀,叫做读呗。对吧,哎,这叫读,然后呢,这个呢,我们就叫做写了。是不是,哎,这个就叫就叫写了,那应该是一边读一边写吧。对吧,啊,应该是一边读一边写啊,一边读一边写,他不可能说一下咔嚓一个G的文件过去了。对吧。他一边读一边写这样的一个过程。所以呢,这个位置呢,需要一个流呢,这个流叫什么呀,叫做output,呃,就叫做input。啊。来这边呢,需要一个什么呀,叫做output。啊,需要一个output。所以呢,我们来演示一下各位啊,其实没什么特别难以理解的地方,COPY01。
05:06
行吧,那么这块呢,咱们来看一下啊,我们使用什么呢?叫做file inputre,加上这个file什么呀,Outputre。完成文件的什么拷贝啊,完成文件的拷贝,那么。这个拷贝的过程啊,应该是一边读一边写。啊,一边读一边写,另外使用以上的字节流拷贝文件。的时候啊,文件类型。随意啊,万能的各位啊,万能的。本能的啊,什么样的文件都能拷贝啊,那么接下来我们在这里呢,写一个主方法,先把file input stream。
06:07
给它定义出来,再把outputre给它定义出来。是不是好了,那么有了这个fire input,有了fire out put之后呢?我们一下fire input stream。对不对,哎,File input stream new,一个需要一个路径拷贝一个文件对吧?来这块呢,我们加一个try catch,我们处理一下finally,我们加上去啊来那么这一块呢,我们就在这是创建一个什么呀,创建一个输入流对象,然后我们在创建一个什么呀,输出流对象对不对?OS等于什么呀,New,一个file,什么output stream。啊,那这样的话,我们这边呢,也需要指定一个文件对吧,一边读一边写嘛,是不是你读哪个文件呢。
07:03
来我们看一下啊,假如说我随便读一个文件,各位。这个文件就叫零一吧,这个文件。啊,读这个文件,然后呢,把这个文件呀。复制到哪呢?复制到我们的C盘的,呃,根下。那这应该怎么写呀?C盘根下有这么一个文件。叫动力机电加YSE是吧,然后avi那么这块呢,一定要注意啊刷新。啊,刷新输出流啊,最后要刷新点flash刷新就行了,这呢有一个异常我们需要处理一下,在这呢,我们需要关闭一下,如果它呢,要不等于空的话,Close关闭啊,那如果谁呀,F is要不等于空的话,我们把is也给它关闭了是不是,那我们来看一看关闭这块,这是关闭两个流是不是。
08:03
啊,这是刷新,这是new,那么这两个流关的时候都有异常要处理,你说这个异常是括在一起处理好呢,还是分开处理好呢?就一起一起try catch。比较好呢,还是说分开踹踹开始比较好啊。大家思考一下。如果是一起的话,会有什么问题啊?思考一下。分开串还是一起串,如果一起踹开的话,这个地方出异常,下边这个是不是就关不了了?大家有思考过这个问题吧?就如果这个关不了,除以常的话,是进到开始鱼块里边了,这个是不是就关不了了。对吧,所以这块呢,要分开踹各位啊,不要一起踹啊,分开串。哎,分开串啊,分开串啊,不要一起串。
09:07
明白吧,在这个里边踹一下。在这个里边怎么着啊,踹一下。明白吧,分开踹啊,一起踹一起,呃,分开踹不要一起踹啊,一起踹可能会影响另外一个关闭啊,一起踹的时候。可能会影响其中一个啊,其中一个出现异常,可能会影响到另一个流的关闭,有这么一个问题,所以呢,你分开拆开吃就行了啊,好了,那这都是次要的,不是重点啊,这边这个new大家都会刷新,也没啥问题,就在这最关键的问题,最核心的啊,最核心的。一边读是不是一边写?准备个BY的数组吧,哎,BY数组,假如说我们现在一次拷贝,呃,10KB吧。
10:00
10KB是多少?十乘以1024。十乘以104是不是10KB啊。这是100KB吧。这是1KB。这是100K吧。那1024乘1024是多少啊?这多少个位?1024个字节是1KB吗?1KB乘1024的话,那应该是一兆吧。就一次拷贝一兆呗。对吧,一次最多啊,最多拷贝一兆,那么这个时候呢,我们就在这里定义一个什么呀,哎,读到的读读到的数量读多少我们就考多少,是不是Y要循环,只要它不等于负一谁呀。Count,它不等于负一,它等于什么呀?FS.read往往哪读,往往BY的数组里边读。对吧,读了之后就写点right,把bit数组当中从零开始对吧?哎,我们写多少啊,读了多少写多少,这样就可以了,大家看这个是不是一个输入流去读啊,读到BY数组当中啊。
11:13
读到多少是不是就写多少啊,这个right方法我们是不是上午已经讲过了,这个file out put stream是不是有个right方法写呀?它可以把bad数全写出去,也可以把bad数字一部分写出去吗?这是个起始位置,读了多少是不是写多少啊,读了多少是不是写多少啊,对吧?好,我们来看一下这个文件在这放着先啊,我们再打开我们的C盘,我们看一下这个位置上各位啊,来我们运行一下。好,大家看这个程序运行很快就结束了,是不是这里有一个文件,这个文件呢,我们来看一下,这就是一个拷贝的文件,你看。对吧,属性我们来看看啊,它这个字节是多少啊,是46414184。184结尾。
12:01
对吧,是4414184。来看一下这个文件啊。46414184字节是吧,就是说你拷这个文件,原文件是多大,然后你拷贝完之后,这个文件呢,它一个字节都不能差啊,这个位置的字节数不能差,明白什么意思吧?啊,如果是你一点都不差的话,那恭喜你,你这个文件就拷贝成功了。啊,还是很快的,这个文件大小是多少兆。是40多兆是不是,哎,40多兆啊。拷贝个40多兆的文件,你看就这样做就行了,运行。是不是,哎,你看就拷贝完了。对不对,哎,还是很快的啊,还是很快的拷贝文件,拷贝这个东西呢,还是很好玩的啊,很好玩的就这个文件啊,是什么样的文件它都能拷啊,都能拷贝图片呀,声音呀,视频呀,是万能的,各位啊,是万能的。
13:02
那么我们现在假如说如果希望我们从什么呢?哎,我们从这个D盘下把这个目录拷贝走,那可能就有点难度了。对吧,因为我们现在还没有学啊,我们只是什么呀,考一个文件还行。拷贝一个文件可以。对吧,哎,拷贝一个文件过去还可以啊好,这个就演示到这儿各位啊。延伸到这儿,这个没什么太难以理解的地方,这个大家有什么不懂的地方,最核心就是这儿了。准备一个bad数组是不是?哎,读多少写多少呗,读多少写,读的话就读的这个文件呗。写的话往哪个文件写呀,往这个文件里边写呗。对吧,哎,读这个写这个。啊,写就行了。嗯。行吧,那这样的话,咱们这个文件的拷贝就讲讲完了啊,这就说完了。
我来说两句