00:01
各位同学大家好,下面呢,咱们通过一个例子,把文件所的相关代码给各位,最终我们来演示一下,那我们来看一下啊,首先我在这个fireo包里边,咱们来创建一个类。这个类我起个名字就叫做fair look demo1把它创建。创建之后,我在里边加上一个main方法,然后在里边写上我们的操作,首先第一个,比如说我先建一个字符串,就是往里边输入这个内容啊,那比如说我们起个名字就叫做input,然后里边加上一个值,咱就叫这个at硅谷,然后加上之后,为了一会儿明显,我把这个值给它输出一下,可能又来一个input。然后我们做一个输出。这个写完之后,下面呢,咱们创建一个buffer,我们来一个BA buffer。
01:02
Buffer等于这个buffer点上一个方法,加上input上这个字节数组,现在咱们把八块做一个创建,然后创建之后我们继续往下来做。下面呢,我们来做一下具体操作,因为咱们要模拟文件锁的过程,也就是读写的过程,所以首先呢,我们先做一个写操作,然后再做一个读操作,那这里边我们来写一下。首先咱们肯定做一个操作,肯定要读到那个文件,然后给它加上这个文件的路径,我们就叫file pass加上文件的路径,然后我这个文件啊,我这应该是在D盘下面这个文件。我的文件叫01点。T啊,这是我们的文件,然后文件写完之后,咱把那个file给它创建出来,通过它来完成我们的操作。
02:01
这个我叫China,等于file.open方法,注意啊,这里边加上的是有这么两类参数,第一个是一个叫pass,第二是你操作那个,就是具体那个相关那个具体操作,比如你是做读还是写,还是做什么追加等等,那里边写一下啊,第一个咱加上一个pass,那这里边我就写上一个pass。然后咱们叫pass,等于用pass,就是加上S,这个里边有一个方法叫get方法,然后加上咱们这个路径,这样的话我们就得到这么一个pass这个对象,然后它里边的第一个参数就传入这个pass,第二个参数咱认传入你要做的操作,那里边我们加上这么一个类,这个类应该叫这个stand。里面那个。这个类在它里边有这么一个参数,那我们加上啊,比如咱加一个叫right,表示做的就是写操作嘛,另外咱们再加上一个参数,这个叫stand。
03:12
加上一个叫A的,就是咱们一块儿写的过程中,做这个追加的这个操作,所以现在咱们把这参数给它叫加进去了。然后加完之后,这里边有异常,我把异常给它加上一个,所以咱们完成这个channel的这么一个创建,然后channel创建之后,我在channel中做一个设置,因为咱要通过它写内容。那咱把它这个position做一个设置啊,我们就来一个china.size减一,这个表示它的position的这么一个值,这个加上之后呢,下面咱对给它加上一个锁,这个锁呢,我们有多种方式,就是里边列的四个方法look,它就表示咱们提到是不是叫独占所,然后里面加参数,那就是共享所,比如说我就加个独占所,最终它返回的就是我们这个lo,这个我们就做到了,就是一个枷锁。
04:13
这位置给各位加个注释。做一个枷锁的这么一个操作。然后这个做到之后呢,咱们下面啊,比如这里边我做一个输出了,就看一下啊,它目前是否是一个共享锁,用lock里面这个方法叫is shared表示是否是一个。共享锁如果是的话肯定是输出处,不是的话那就输出false。然后这个做完之后呢,那下面呢,咱就开始做它那个写的这个操作,我们用里面这个read方法。加上咱们刚才创建那个buffer,这样完成了写操作,然后完成之后咱们把China。
05:02
加上一个close,所以各位注意啊,这里边咱就把这个写的过程我们就完成了。那写的过程完成之后呢,下面咱开始写这个读文件这过程,那读文件我就单独来一个方法,比如我们叫这个read file里边加上咱们那个文件的路径,然后我在下面把这方法咱给它创建出来,在里边完成咱们读文件的这么一个过程,这是我们要做的事情,那这里边我们来读一下这个文件,那怎么读呢?应该都是我们IO中的基本操作,比如咱们看一下啊,然后我快速写一下,首先这里边我们先创建这么一个就是。File read,因为咱们是一个普通的T文件,所以我们用这个字符流直接读就可以了,然后把它包装成一个B,然后最终用里边这个叫read烂方法。咱们可以一行一行进行这么一个读的操作。
06:00
那这里边给各位我这个位置快速来写一下这个代码啊,首先我们写一个叫file reader。我们起名就叫fair read,等于new上一个fair read里边加上咱的这个路径,这是我们的第一步。有异常,我们直接加上一个those。然后这里边啊,直接throw它的exception,这是第一部分,然后写完之后我们加上这么一个就是buffer,给它包装一层buffer。等于就是扭上这么一个八块read,然后做这个过程啊,这个代码我就直接复制一下了啊。这个代码,然后大家看啊,上一个ber read里边传入这个file read。然后通过buffer read中的read的烂方法,我们来做这么一个读取啊,那里边做输出,比如写一下啊,读取出的内容它是什么,咱们做一个提示,为了一会儿测试更加方便,下面呢,我们继续写代码,我们来一个while的这么一个循环。
07:15
在里边我们做一个判断啊,也就是如果说这个TR它不等于空,那这里边呢,咱就把这内容我们给它做一个输出啊,咱们来输出一下。然后输出之后在里边咱们就是继续啊,给它就是读一下,因为咱是循环给它读一下,包括最后把这两个内容给它关掉,一个file reader,一个b reader,我们最终给他做到就可以了。这里边的名字我们给他快速改一下啊,就是这个。
08:01
八块。还有这个叫fire。所以大家看啊,现在咱们把这个就是关于文件所的代码,我们就最终完成了,包括它的写操作,还有它的读操作,这个咱们就完成了。那下面呢,咱们把代码来测试一下,看一下效果,首先我先执行一下,然后咱们看一下它的效果怎么样,我们发现啊,这里报错了,咱看什么问题啊,它提示我们说里边的应该是这个路径地方写错了,那我们来看一下啊,该是这个地方我们少写的一个写个,然后下面我们再测试一下。注意啊,目前这个所是一个独占所,所以在独占所里边,咱是不是能做这个读写这个操作啊,这是我们完成的第一个测试,那比如第二个咱再改一下啊,把这个锁我改成这个共享锁,那我们改一下,首先比如第一个我来一个这个零。
09:02
然后第二个我们加上这么一个就是。里边啊,就是这个最大值,给它加上这么一个长度,第三个加上一个处,这样的话表示它就是一个共享锁,然后咱们再测是看一下里边的效果是怎么样的,我们来试一下啊,大家注意,首先这里是报错了。因为它是一个共享锁,共享锁的话,就这里边你不能再做这个写的这个操作了,因为它只能做读而不能做写操作,所以咱们现在啊,就把这个过程给各位做了一个演示,关于fireo文件锁的这么一个操作,咱们就最终演示完成了。
我来说两句