00:00
各位同学大家好,欢迎继续收看上硅谷Java n IO课程,咱们继续来看这个缓冲区操作。下面呢,我们看第三个操作,叫做直接缓冲区,咱们也是通过代码直接演示一下,直接缓冲区的目的是为了加快我们IO的速度,是一种特殊的方式分配内存的这么一种缓冲区,那下面我们来做一下这个操作,而这里边我们教的方法叫这个allocate direct,用这个方法实现这个直接换出去创建,那下面呢,我们来写下这个代码。通过代码给各位最终演示一下里面的一个效果。那现在我在这里面写下。首先我们的创建一个叫直接换成同学。在这里边呢,我们来晃略一个方法,我们来写一下。
01:03
这个方法有个名字,我就叫B03。把这个创建,然后创建之后咱们来做一个就是文件复制,或者说文件拷贝过程,把一个文件的内容复制到另外一个文件中去,那下面我们来写一下,首先我们点,比如咱们来一个加上文件路径,我起个名字不要这个一。加上咱的文类。我的文件应该在D盘里边。At弧下面。我这个文件应该叫零音节。开T,这是咱们文件的路径,然后写完文件之后,首先咱先通过那个输入流把文件先得到,然后再打开我们这个就是文件的这个file channel,那我们来写一下啊,我在里边点上一个input。
02:05
只要这个in等于new上一个file音符的里边加上这个file,这是创建一个文件的物流。这边有异常,咱们给它直接。然后这个写完之后,那么通过这个就是fin是文件的输入流,来得到里面那个pan。我们来一个at,得到里面这个这个值。发给他个名字,比如叫这个就是呃,F。一。这是我们建的这么一个文件输流,然后第二个呢,我们建一个文件的输出流,写法跟这个过程基本上是类似的,那咱用它我们给它快速来改一下啊,比如说首先我在里边点上是一个内容,咱们叫这个out。
03:10
那这里边呢,我们写上文件的路径,并且加上文件呢,应该是它那个输枢流,那我写一下啊,这个文件我们要零二.tt然后这里边咱们改成这个叫output。是这样。包括这个,我们改一个名字叫F。一个叫output。然后100,我们给他一落。就是这个啊。快速拍下。然后洗完之后,这里边也是建个这个channel,我们用f out,然后把这个给它写出来。
04:01
所以这样的话,大家看啊,目前咱是不是有两个。然后这个做到之后呢,下面咱就来创建一下,我们里边这个叫直接缓冲区。把这个分解出来。我们用这个BIT8块里边这个方法到alo k director里边,比如加上一个1024,这样的话,把这个直接缓冲区我们做创建,然后创建之后呢,下面咱就做这个文件的复制,通过缓冲区,通过流咱们来做这个过程,那这里边我来写一下啊,我们来一个Y。这边插上一个就是款。然后写完之后,首先八法我们先加上一个口令啊,数一下完之后咱们用这个就是F这个。
05:00
嗯,里边这个就是China。点上一个幂的方法,加上八法,它最终会返回一个值,这个值比如我们就叫这个R,然后咱们根据R咱们做一个判断,这里边继续来写一下啊,各位注意啊,如果说R的值呢,它等于负一,那表示就结束了,如果不等于负一,那我们继续做这操作,那我写一下啊,如果R值。等于负一,那直接加上这么一个,这结束了,如果它的值不等于负一,那它首先这个八克点上这个。Flip一个模式的转换,帮我给它position变成零,然后再用这个f out。点上这个right方法,加上这个buff法而完成咱们最终的这个过程,所以大家注意啊,现在我通过个代码就完成咱们这个直接缓冲区的这个操作,通过这些缓冲区咱们做了一个文件的复制,而这些缓冲区主要就是这个代码,通过这个aoccate direct的方法创建一个这些缓冲区,所以这个代码我们就最终完成了,完成之后咱把代码执行一下,看一下最终的效果是怎么样,我们来执行。
06:25
因为我这里边没做输出,咱们直接看一下我们那个文件,我把文件打开,D盘的at硅谷里边我们有零一。包括有这个零二啊里面这个内容啊,那这里边我们就完成这个过程,那咱们往里边呢,给他写点数据,之前应该是没有数据啊,咱们把数据给他写一下,然后最终完成一个文件的复制过程。我们像零一这个文件中的,比如说我写一段内容啊,之前可能没有内容。咱们比如来一个这个at硅谷123456给它给住,比入之后零二里边目前等于空,然后下面呢,咱们把代码执行一下,看一下效果,能不能完成一个复制,我们来试一下啊,这里边没有报错,然后咱们到文件中看一下。
07:15
大家发现啊,目前好像有一个问题,咱发现零一数据是不是清空了,零二里边是不是也没有啊,那我们看一下啊,是不是咱们代码中哪个地方写错了,咱们来看一下代码,咱们来看啊,首先输入流得到一个channel,然后输出流得到一个channel啊大家注意啊,这里面一个地方写错了,各位应该能看到我输出里用的文件是不是应该是这个out file。但是你看我写的还是谁,是不是还是阴反啊,所以造成咱们刚才问题,我给他改一下应该就可以了,所以刚才遇到的是问题。这个文件部分我们写错了,然后改完之后我把内容给他带回来,来一个at硅谷。123456,这是灵异里边,然后加上之后,咱们把代码再执行一下,看一下效果,我把它执行。
08:09
然后咱们看啊,这里没报错,咱们看零二中,各位看到这个数据是不是就复制过来了,咱们把零一中的那种复制到我们的列号中,所以这就是关于直接缓冲区的这么一个使用,各位知道里边的这个代码的这么一个过程。
我来说两句