00:00
成,那这呢,我们就复制完了,复制完以后咱们说呢,回头针对于这个非文本文件的这个数据呢,咱们都可以使用这个file input stream和file output stream呢去实现啊是没有问题的,那这块呢,其实我们可以写一个通用的操作,通用的什么操作呢?我这现在就写一个方法,这个方法呢,就是实现指定路径下的一个文件的复制。啊,指定路径下文件的一个复制操作,这样的一个方法,让我看看怎么写public。这呢,我就是一个word,我就叫做copy file copy file其实呢,就相当于我们把上面这个方法呢,给它这个抽离出来,这些变化的东西我们放到行参,不变的呢,我们就写在这个方法体当中了,那么看一下我们上边这个其实就是个复制操作,我现在想写这个方法,你看哪块呢,我们适合放到行餐。像这些呢,是不是这都固定的,你都可以写,写成个固定的啊,这关闭呢,也是固定的,其实唯一变的呢,就是是不是就文件啊,对这个呢,File呢,其实也没有变化,主要变的就是路径,所以不妨呢,我们在这个方法这块呢,我就写上叫string类型src的一个pass啊,再来一个string类型,你要复制到的一个pass啊这么着。
01:23
接着呢,我们可以就把刚才这个代码从这到这CTRLC,咱们完全的给它粘过来。诶,粘过来以后变的位置不就是这吗?哎,我把这个位置呢,改成叫src的一个pass。哎,DT它的一个pass。是不是就可以了,哎,这就改好了啊,那改好以后我们呢,下边可以做一个测试,你呢就可以填具体这个路径,我们看一下这个复制的操作,哎,Word test叫copy,一个file,哎,这么着在这写,那我们这块呢,去调这个叫copy file,这个方法我们也可以看一下它复制一个文件花了多少时间,咱们前面也讲过类似的这个逻辑了,哎,Current minutes out enter,这叫start,那这个执行完以后呢,我们再记录一下这个终止的一个时间。
02:22
哎,CTRLC啊,CTRLV一下,这个呢叫一个end,哎,我们写一个叫复制操作花费的时间为。哎,这样加一下。哎,括号里边让我们这个N呢,减去start。哎,我们记录一下到底画了多少毫秒啊,那这里边呢,我们去填一下具体的这个文件了,哎,你可以来个时针型的叫src的一个pass,诶给一个路径啊,四针类型DST来一个pass,给一个路径。然后呢,S RC pass放进去,Dit这个pass放进去,这么就实现一个复制了啊,那现在呢,咱们就可以做一个这样的复制操作。
03:07
啊,这呢是一个方法的一个执行,那复制的话呢,咱们整一个图片的话呢,是不是看不太出来啊,整个视频呗,整个视频,那我就拿咱们今天讲的这个来了啊啊这个我把这个中午分享这个放这里了,这个你拿到外边吧。哎,放这啊,这里边呢,找一个视频咱们复制一下,大家呢,你也可以找一个,比如电影复制一下也行啊,这个电影呢,你就别找小电影了,找个大点的电影哈,啊,这个太小的话呢,这个你看不出来这个差别啊,因为回头咱们还要讲一个缓冲流,我现在呢,之所以写这个代码呢,就是想让大家体会一下,咱们回头还是同样一个文件,我们用缓冲流,你看看这个速度呢,是不是确实有提升啊,所以呢,我们拿一个视频,视频比较大的,那就看这个吧,CTRLC啊,我把它呢,就放在咱们这个桌面上,这个文件呢有点长,我就改一下名吧,改成这个零一。
04:09
零一杠视频吧。这样子啊,然后呢,诶,我们就看一下属性,先在桌面CTRLC。放到这儿它下面。哎,我们的这个。哎,文件啊,C这个还过不来啊,这样CC一下。放到这这呢,是咱们这个要复制的这个文件,然后CTRLC,呃,我复制呢,还复制到桌面上吧,我叫一个零二啊。那就这样,那这样写完了,写完以后呢,我现在要复制,复制的时候呢,大家稍微再关注一个事儿,这呢是我们一个视频稍微大一些了,这里边呢,我们用的是一个数组,这个数组的长度关注一下,我现在写的是五相,在每次呢,是不是就往里写入最多五个字符,哎,字节了吧,这个五呢,其实会影响我们的这个时间,很显然。
05:07
你要放五跟放十,大家也能想到,是不是应该有点区别,对,那你说这个呢,是不是越大越好呢,越大呢,到时交互的次数会变少是吧,但是你要特别大的话呢,占用的内存相应的也会多一些。这是其一,另外的话呢,你要是特别特别大,其实呢,我在这块呢,往这里边装的过程,呃,装装装装装装,然后呢,这块再我再往外卸,其实你倒还不如一个适中的装一点,这块赶紧卸了,卸了再过来装。其实有一个相对来讲比较适中的一个值啊,这呢咱们就不去研究一下这个统计学说到底哪个呢,相对来讲更好了,所以通常呢,咱们要写呢,一般呢都要写成1024了啊,当然了,咱们真正开发的时候,其实这个咱们会用的这个缓冲流,它里边呢,自动就会有一个缓冲的一个区域。啊,咱们讲的那时候再说啊,暂时呢,咱们就写一个呃整数啊,这我叫个整数了啊对于咱们乘序来讲,乘员来讲,1024就是整数是吧?啊它是二的多少次方,哎,十次方,二的十次方啊相对呢,本身呢,是想以这个1000为个单位,这个进位的,但是在咱们这个程序里边呢,都是二进制嘛,是吧,正好二的十次方呢,是最接近于它的啊1024嗯,就用它了,那这呢,我就写的相对来讲大一些,那大家呢,下来你可以试验一下,你这写成五跟写成1024,你看看哪个效率高。
06:36
是有区别的啊,哎,它呢是要快一些。写完以后,我们这块执行实现一个复制好搞定了618毫秒啊,这就出来了,出来以后你简单打开看看。是吧,哎,这个也是OK的,没问题,你也可以呢,看看我们这个文件的这个大小,这是这个原文件。
07:00
哎,复制以后的这个文件。啊,看这个大小没问题。好,这呢就是一个完整的复制操作,花费的时间618,我这呢记录一下。618毫秒啊行,那这的话呢,我们就把这个,呃,复制文件这个事儿呢,就说完了,那多说一句,大家想我现在呢,拿着这个方法啊,就咱们写的这个copy file的方法,我要是拿它去复制这个文本文件O不OK。按照咱们刚才的说法,那会说了,说你这里边用的呀,是file input和output这两个流,这两个呢是来处理字节的,按说呢,是不是就不太适合来处理我们这个文本文件了,对,但事实上呢,大家可以进行一个复制是可以的。哎,我们就验证一下就行啊。你把这个路径就换一下S2C的一个pass,这是一个。
08:07
DT它的一个pass,看这一个。这两个路径咱们再用一下这个相对路径啊,CTRLCCTRLV这个呢,再过来来一个三,这里边咱们是有中文的,行,这呢,咱们是对这个文件的一个复制执行。看你看六毫秒啊,那复制完以后这块呢,就是它嘛,打开你看诶可以怎么解释呢啊,1031024比较大啊,这个也是一个道理啊,就相当于一次性的都一次就给他搞定了是吧,那我给你改改改成五,这时候呢,这时候呢,我这样写的话呢,是对文件的一个复制了,呃覆盖了啊,所以呢,不用删这个HELLO3了,直接呢我再跑。
09:00
你看三,然后打开那也OK啊。哎说哎,刚说这个结论是不对了,刚才跟现在的区别是啥呀。刚才我是在控制台看了。我在控制台看了,现在我没有看。你看刚才咱们这是一个文本文件,我那呢读到咱们这个内存层面,我是不是用了这个顿想看一下啊,这时候你别看,因为你把这个中文的中呢给它劈两半了,那现在呢,我没有看,我直接呢进来以后直接就出去了,然后呢,你在这块打开去看的。啊,其实相当于此时的我们的自节流,它就是一个搬运工,像这个农夫山泉讲的,我们不不生产水,我们只是水的搬运工,是吧?啊,他又把这个数据你想想,不管你是文本文件也好,非文本文件也好,底层是不是都是0101啊,哎,我这儿呢,不想在这个内存层面呢,我给你转化一下,一转化可能就有问题,我不转化你你这块什么样,我还原封不动的再给你复制过去,所以你这块再去打开,其实不会出现乱码。
10:11
就是你别在这个内存层面去看哈,要看的时候可能会出事。啊,但是呢,你文本文件相较于咱们这个呃字节来讲,用字符呢,你去读了再写出去就是更好一些啊,只是这样子,如果呢,大家只是对这个文件做一个复制的话呢,那你知道用字节其实也行啊也行,但是呢,你别在内存层面去读,你要读的话呢,那还得是用这个字符啊,还得用字符。嗯,那反过来反过来,我这是一个非文本文件,非文本文件呢,你这块你说我用字符去读,我也不想看,我就在紧接着出去行不行,这是不行的。这块呢,稍微有点绕啊。嗯,这个我们再稍微总结一下,这个结论就是刚才讲了说文本文件呢,你就用字符流,这个分文文件呢,你用字节流,先记住这个事儿,然后说如果是一个文本文件呢,你只是想复制一下,其实用字节流也行,你别在这个内存层面去读啊,去读出来这个时候呢,可能会有乱码。
11:19
啊,仅此而已,这个返回去的非文本,哎,还是不能用字符的啊,这个要注意行,那这是咱们说的这个复制操作啊,这个复制操作的话,我还把这个改的大一点,那就啊1024啊还回去,然后这个位置的话呢,咱们也演示了一下,其实是可以来处理这个文本文件啊,但咱们现在呢,就大家知道这个事儿就行,咱们呢,这块还是演示一个非文本的,这样的操作还是更多一些啊。行,这呢是咱们写了一个复制的操作啊618。啊,这这就讲完了啊,那么接下来呢,我们再讲的话呢,就要说到缓冲流,缓冲流,哎,我们也写一个对应的复制操作,大家来看一下,我使用file input output,使用它俩和使用缓冲流复制同样一个视频,到底谁快。
12:10
啊,这样一个问题。
我来说两句