00:01
各位上硅谷的朋友们大家好,欢迎继续收看上硅谷Java n IO课程,刚才呢,咱们完成了通过file channel进行读取数据到buffer的这么一个过程,我们通过代码做了一个演示,那下面呢,我们把这个file channel给各位做一个详细的这么一个说明,那我们来看一下我的课件中关于file channel的操作的详解。首先咱们看第一个内容就是如何来打开一个3CHANNEL,其实这个过程呢,咱们刚才代码中应该都有体现,那下面给各位再来重复一遍,我们看一下这个过程,首先我这里写到啊,在使用file channel之前必须先要打开它,那怎么打开呢?在file channel中呢,它并不能直接打开,需要通过一个什么,就是要么你是输入流,要么输入流,或者用咱们刚才代码中一个对象,这个对象叫random么a set file来获取出来一个file拆动实例,而下面代表就是通过这个random a set file得到的一个file channel这么一个实例,这个各位要知道如何来打开一个,这是我们的第一部分。
01:22
然后这个说完之后,咱看第二部分啊,就是从范channel中咱是不是要读取数据哦,那怎么读取呢?我这里写到啊,调用多个read的方法,然后从这个里边来读取数据,比如说咱们看这个代码中,第一个我先创建一个BAT这个buffer,然后调方法read,从里边是不是可以读出数据来,所以这是里面的过程啊,而在它读取过程中,大家注意啊,Read的方法会返回一个int值,它就表示有多少字节被读取到这个B中去,也就是这个int这个值,如果这个值呢,凡是负一,那就表示到了文件的末尾,大家注意啊,我们刚才代码中是不是就是这个体现,你注意这个值,咱们做了一个判断。
02:13
怎么来实现的?如果它的值不等于负一,那就表示。没有到咱这个文件的末尾,那我们继续做操作,如果它等于负一,那就表示到了文件的末尾,那咱的操作就结束了,所以这是第二个,怎么从file传中读取数据,各位把刚才这个代码给他,要牢牢记住。然后这个说完之后呢,我们再看第三个啊,就是咱们如何向file中去写数据,刚才咱是读这里边还有一个写数据,那写数据怎么做呢?咱往下看啊,在file channel中有个方法,这个方法。叫write方法,它可以向这里边来写数据,所以下面呢,给各位我来写个代码,在代码中来实现通过file channel写数据这个过程,那下面咱们来写下这个相关代码。
03:09
这边咱们来到我们的idea中,首先我在这位置呢,比如说我先创建一个类,这个类呢,我给它起个名字,我就叫这个TDEMO2在里边咱来演示通过或这个就是写的这个操作,那我在里边发上。通过这个。实现一个就是写的的操作,也是通过缓冲区啊,这里面来做这个解决过程,那这个怎么做,下面给各位写一下这个代码啊,代码和刚才读基本上是类似的。首先给要步骤啊,第一步咱们还是先打开一个这个样,再提示一步。然后打开之后我们再继续往下实现,那咱们把这个先打开一下,和刚才的代码是一样的,首先咱们用一个对象random a set file,然后起个名字,我就叫这个a file。
04:13
等于摸上一个random access file,然后在里边呢,我们来传入两个参数,第一个就是那个文件的路径,第二个它那个模式咱们还叫RW,然后这个文件路径我们现在啊,比如说还是在我这个目录下边,咱们给它I滚件,比如咱用这个叫。001.3T1是咱们向这里边来写入我们的内容。然后有一场我们来一个throw,所以这是第一部分,然后洗完之后,咱通过a file里面这个方法at得到咱们这个,这就是里边的people,先打开这个这个位给他知道,然后第二步呢,我们来做这个就是点操作,那怎么做,首先咱们肯定还是先创建一个这个。
05:07
八块的一个比较,把这个我们先创新。我们在里边同样写上这么一个叫这个就是。带。这个buffer,然后咱们起个名字,我就叫这个buffer。等于这个BE8块,点上这个alo里边加上这么一个,比如叫1024啊,就是创建一个八块。然后创建之后呢,因为咱们现在要向里边来写入内容,那我这里边比如说我就直接咱就建个图场,就往里面写的内容里边我起个名字啊,就要这个new data,这里边我给他随便加上一个内容,内容,比如就写一个咱就叫这个it。At归后一会儿就加上这个内容。
06:02
然后这个写完之后,因为咱要写到八块中去,所以首先把八块我先做个可令给它清空一下,然后清空之后咱们往里边来写入,我们这个就是另一种,或者写入你的数据,那怎么做呢?在八块中有个方法和这个put方法,通put方法咱给它就放到咱的B中去,然后现在我用这个叫new data,通过字节的形式就是KPA。这样的话把它就放到了ber中去,然后放到buffer之后,咱把buffer会一个这个图写的一个转换,就是模式的转换,这个flag方法,最终做这个channel,这个过程就是通过这个file channel完成它最终的这么一个实现,那我们写一下啊,File channel。完成最终的一个实间,那怎么实现呢?首先咱们还是Y要做个判断。
07:03
Cover里边当上一个叫哈希remain,就是里边如果有剩余的这个内容,那这个时候我们再做些操作,咱通过开到里边的一个方法给各位要牢牢记住啊,咱们读用的是read,写用什么,是不是这个right里边加上咱这个打法。这样的话自动完成一个操作,然后写完之后,注意最后一个别忘记啊,咱要把这个channel给它要关闭掉,就是最终要关闭我们这个开,那这里边我给它关一下啊,就最终。关闭这个,咱们写一个点上这个close。把它就对中关掉A,咱们就是通过这代都完成一个file channel写操作过程,主要用到里面这个write方法进行这个写的过程,所以这个代码我们就完成了,比如这里写到的啊,注意这个操作中有一个问题啊,就是你需要在while循环中调咱的right方法,因为你right方法无法保证一次性往里边写入多少个字节,所以咱需要循环调用right方法,直到里边没有这个数据为止啊,就是一直调外循环,然后一直往里边写内容,所以现在这个代码我们就完成了。
08:27
完成之后咱们把它执行一下,看一下最终的结果啊,那我现在把代码执行一下。这里边已经执行了,然后咱们到我们的文件中看一下,就是001.txt把这个打开,大家看data at硅谷是不是咱们刚才的数据,这样的话就完成一个写入过程,所以现在啊,咱们把这第三部分就说完了。如何向file channel中写数据,就是咱们演示这个代码,然后最后这里写到啊,别忘记关闭file channel,那关闭的话,那就调这个就是方法,最终进行完成,所以这是关于file channel写操作的这么一个过程,咱们做了一个演示。
我来说两句