00:00
各位上硅谷的朋友们大家好,欢迎继续收看上硅谷Java n IO课程,刚才呢,咱们通过China完成了写的这么一个操作过程,那下面呢,我们继续看一下,在file channel中还有另外的几个方法,给各位也做一个详细的说明,那我们来看一下,首先咱看第五个方法,各位注意啊。在file channel中呢,有个方法叫position方法,这个方法是什么呢?给各位做个说明,我这里写的就是在有的时候呢,咱们可能需要在特定的这个位置进行数据的读和写操作,那这个时候position方法就有它的用处了。position方法是做什么的?就是获取file里面的当前位置。也可以通过这个方法里边加个参数,设置你当前这个file channel的里边这个当前的位置,所以这是position,比如说各位看啊,我这里边通过position方法得到你的当前位置,另外可以直接设置它的当前位置,通过position可以实现,而这个场景就是在特定位置进行数据的读和写的操作,这各位给他知道就可以了。
01:18
当然这里边呢,有这么一个问题给各位要特别说一下,比如说大家看这里边。我用position加上pose是不是它的这个当建位置,然后我加个123,它的位置是往后加的1231,但是这个时候呢,问题是什么呢?就是现在如果咱们设置的文件的结束符之后,然后我向文件中写数据,那这个时候呢,这个文件会给它就是撑大到就是给它一直到我这个POS加123这个位置,这个时候可能造成什么?就是文件的空洞,也是它中间可能有这个空间的这种间隙,就是中间没有数据,所以这是它本身可能造成的一个问题,就可能会造成啊这个文件的空洞,这大家知道一下,所以这个叫position方法,根据特定位置进行数据的读和写操作啊,这个再做一个说明,然后除了这个之外,下面还有一个方法叫size方法,这应该好理解,Size方法什么意思呢?就是返回该实例所关联的文件。
02:24
的大小,就是返回你的这个大小,用S得到,然后除了这个之外,下面还有方法,这个方法叫拆开方法,拆开的什么意思呢?我这里写到啊,用这个方法它的作用是什么?就是截取一个文件,那比如说大家看看例子啊,假如来一个China check it1024,那什么意思?这个例子就可以截取前1024个字节,就是前面124节都给它截取出来,所以这个叫开头,这是我们说的三个基本方法,一个叫position。一个叫size,还有一个叫这个TRY,这个位给他知道一下就可以了。
03:06
然后除了这个之外呢,下面还有一个方法,这个方法叫做false方法,False是不是有强制意思,那这个方法是什么意思呢?我们来看一下啊。这个方法的作用就是将通道里边尚未写到硬盘的数据,怎么样强制写到你的硬盘中去,就是比如说你这个通道中,或者说你这个里边还有那种,那我用for方法可以给它强制写到一般中去,这个就叫for方法,这大家知道一下啊,就是有的时候呢,如果说咱们无法保证写到拆到里面的数据一定会及时写到硬盘中,如果你要保证这一点,那这个时候用for方法就可以做到,因为它是强制写到硬盘中去。所以这是我们说的里边的几个基本的方法,各位知道就可以了,然后除了这个之外呢,最后还有两个方法,这两个方法比较重要,一个叫transfer to,一个叫transfer from,这两方法做的是什么事情呢?他们实际上就是通道之间的数据传输,什么意思?比如我现在啊,有两个通道。
04:18
而两通道间的数据可以互相进行传输,你可以直接把数据从一个拆到传到另外一个拆分中去,这个叫通道之间的数据传输,而咱用这个transfer from和这个transfer to都能实现这个过程,那下面的我把这个例子给各位演示一下啊,咱分别用transfer from,还有这个叫transfer to来实现这个通道之间的数据传输,那咱们看这个该怎么做,首先我们先用这个transfer from来做一个实践,那这里边给各位写下这个例子。我在这个位置写一下这个代码,首先这位置呢,我先创建这么一个类,这个类我起个名字就叫做DEMO单,然后在这里边咱就演示这个通道之间这个数据的传输。
05:15
数据的。全书,那咱们来写一下这个代码,首先这里边呢,我们先用第一个方法,就是这个方法叫transform from方法,咱们先这个实践,通过它来实现咱的过程。那咱们看这个代码该怎么做。首先这里边呢,因为咱是通道之间的数据传输,所以这里边咱至少是不是要有两个通道在万力过程,所以我现在啊,在里边我就建两个通道,比如说一个叫from,一个叫to,咱把这个建做创建,那这里我来写一下啊呃,这些代码我先给它删掉。然后咱们操作一下啊,就是第一个我先创建。
06:03
两个这个。太。把它创建,那比如说一个channel啊,咱就用这个001,就是之前代码,然后咱起个名字不叫phone,这是我们的第一个,然后这里边我再创建第二个用它我快速改一下啊,因为代码都一样,第二个叫这个。然后这里边咱叫这个,呃,就是零二.tt这个位置,我叫这个to channel。啊,然后这里边我们叫这个b file title给大家注意啊,目前我建了两个title,一个是from,一个是to,把这个做到了,然后做到之后呢,下面咱们实现两个通道之间的传输,比如现在我想把from里面的数据。传到图里面去,来做这个过程,那怎么做,给大家写一下啊,首先它的做法就是,呃,写下这个过程啊,咱就把这个就是。
07:03
From中的数据。给他传输到我们这个就是。吐里面去。To title中去,那这里边我们怎么做呢?给大家写一下啊,咱就叫那个to title中这个方法,这方法就叫transform from,用这个做实间,就是图里边要传过来,那传的是谁呢?第一个肯定是咱这个from,因为你要把from这数据传过来,所以这是它的第一个参数,咱写个from channel,然后传的话是要从它的第零位置开出传应,所以这里边我们来传位置,就是它那个零啊,或者说你在外边写个变量都可以,比如说这里边我就把这复制啊,再来一个叫long position,然后加个零,从第零位置我们开始做这个传输,就是第二个参数我们到这个。Position。
08:00
这是第二个,然后第三个我们看这个from China这么一个,就是它那个大小,咱们来一个size,然后得到的这个叫size,就是把它从第零位置,然后咱们开始做一个传输啊,这个叫袋子。所以大家看啊,咱们这么写码之后是就完成这个通道间的数据传输,把from中的这个那种传到咱的to channel的通中去,这个过程就完成了,然后最后咱们把它做个关闭啊,包括咱们再做个输出,这个我直接复制一下啊,比如这里边我们有a close。If,最终再说一个over,表示它已经结束了,所以现在啊,这个transfer from方法我们就做了演示,完成了通道之间的数据的传输,这个我们就写到这里,然后写完之后咱们把代码执行一下,看一下它的效果怎么样,咱们来做一个执行。
09:04
然后我们看一下啊,提示我们over是不是结束了,然后咱们到这个文件中,我们来看一下啊,在我D盘的at硅谷中,001是我们那个内容date at硅谷,然后咱们来到这个就是里边这个应该在我们的零二里边啊,然后打开这个零二,在零二中是不是有date硅谷,这样的话通过通道就完成了一个数据的传输,所以这是关于咱们的第一个方法,Transfer from这么一个使用,各位把这个给它知道,就你要知道怎么进行通道之间的数据传输。啊,这个我们就演示完成了,然后演示之后呢,里边还有另外一个方法,其实跟它是差不多的,是这里边啊,换了一个名字,或者换了一个简单操作啊,那咱们看最后一个方法啊,这个方法叫transfer to这个方法,那我们下面再用它也来做一个演示,就这个。
10:04
Wonderful to的这个方法。那这个方法怎么做,咱们快速来改一下啊,比如现在这里边为了明显啊,看一下我的文件啊,我文件中应该有个零三,呃,我先去掉一个空文件,然后咱一会儿把数据给它放到零三里面去,那这个过程怎么做呢?跟刚才就稍微有点小区别,但是过程都是类似的,咱先看一下啊,首先两个通道。然后这里边咱通过from穿to到你的拆中去,就是它的方向写法跟刚才正好相反,但是过程都是一样的,就是现在我通过from传到你的to里面去啊,这是我们写这个代码,然后咱们来把这个代码最终实现一下啊。大家注意的写法。From channel,点上这个叫transfer to,加上你的从第零位置加上它的size,再到咱这个to开头中去,所以这样的话,咱就把这个代码完成了。
11:10
用我们写到的里边的第二部分,通过transfer to实现通道之间的数据传输,这个咱们来测试一下啊,看一下最终的结果。提示我们是over,然后咱们到这个零三里边date at硅谷是不是就传过来了,所以现在啊,关于这个file channel部分,我们就最终也是完成了,要求各位记住啊,File channel它的相关的特点,然后这里边怎么通过它进行读,包括进行写操作,以及里边几个常用的方法,包括最后一个如何实现通道之间的数据传输,这就是我们演示的file channel里面的相关内容。
我来说两句