00:00
各位同学,咱们继续来学习这个buffer,刚才我们对buffer做了一个总体上的介绍,下面呢咱们来讲解一下buffer的基本使用,也就是buffer到底该怎么去使用,然后咱看一下啊,之前其实咱们也提到过使用buffer进行读写操作,一般我们要遵循以下的四个步骤,第一步就是写入数据到八块,第二步第二分离的方法做这个模式转换,第三个从八个中读数据,最后调clear粒或者方法把里面内容清除掉,这是我们写的一个基本的过程,所以咱们代码也是按照这个流程最终做到的。包这过程中咱们做一个详细说明,就像这句话我们来看一下啊,首先当咱们向八分中写入数据的时候呢,八分里面会记录下你写了多少个数据,一旦要进行读的时候,需要先通过这个Li做一个模式的切换,就切换到你的读的模式,在读的模式下,咱们在读西之前,我们先写入到八个里边的所有数据,一旦读完所有数据之后,就需要清空你的缓冲区,让它可以再再次被写入,而这里面清空咱可用可粒或这个comp派的方法进行实现,可粒会清空整个缓冲区,Compac只会清空你已经读过的数据,所以这是一个关于八份一个基本的使用过程,各位把这给他知道一下。
01:33
然后这个说完之后呢,下面呢,我这里边通过两个小例子,把八份的具体使用,也就是他的读写的过程给各位,通过代码我们来写一下这个操作,那下面我们来看一下里面这个代码。首先啊,我在这里边呢,八块这包里边我先建个类,这个类呢,我给它起个名字,比如说我就叫这个八块。
02:01
一。咱们来换铁米。然后在里边来演示我们的操作,首先在里边,比如我先建一个T方法,我们先写里边的第一段代码。第一端代码呢,我们就来做一个八块这个读的这么一个操作,那我在里边点一下,首先我在里边加上这么一个T,咱就有一个单元测试写下,下面我们加上方法。Public,比如这个名字我就叫。里边的零一。这是我们解的第一个方法。然后在八法零一里边,我们来完成它相关列个代码,那我们来写一下啊,首先里边的操作,那是不是先要去创建,或者说打开一个channel,那这channel我们就用,我们之前曾经学过这个还channel咱们做实现。
03:02
这是单的look,先建一个channel,那我在里边写一下啊,首先在里边写一个叫random size,然后起个名字,这个叫a file,等于我们用这个用上一个set file里边加上你文件的路径,还有你文件这个操作那个mode模式,比如我们叫RW读写模式。是咱的第一部分。然后在这里边呢,咱们把那个文件的路径给它来写上啊,当然这里面有一常咱给他直接来一个告。直接这个exception。在里边我们加上文件路径,我这个文件,比如我之前应该有这个在D盘里边,这个at硅谷下边有一个01点。填T,咱把这个加上这是部分,然后这个选完之后,咱们通过a file里面这个方法到at t,得到咱们里边这个T,这是我们的部分,先创建一个T,这个做到了,然后做到之后呢,第二部分咱就来创建一个B。
04:19
放电的时候呢,我们可以指定八块的固定大小多少啊,就指定它的大小。那这里边我们来写一下啊,运用这个常见的k buffer,我们叫这个buffer,等于这个k buffer里边有个方法叫这个alot,比如说写一个1024,那就表示它目前变一个八块的换成区,然后它的大小是1024个,写这个咱就完成了,完成之后呢,下面咱通过拆来做这个读取的过程啊,就是写一个。读这个操作,那我写一下啊,T里边这个方法操作,Read里边搭上咱的B,就是通过title用这个读的过程,因为它返回就是读要那个字节那个数量,比如咱们起个名字啊,我就叫这个。
05:12
艾。Read啊,这一个名字读到它这个就是大小。这是我们写的这个代码,然后这个写完之后呢,下面再做判断,如果说这个值等于负一,表示读到了文件末尾,也就是结束了,如果它不等于负一,那我们继续往下进行操作,所以这里边我们来一个Y循环,然后做这么一个判断。在里边写一下啊,如果说里边那个at read。这个值不等于负一,不表示它里边有内容,那这个时候我们进行一个操作,那首先先给它就是转换成咱们一个就是read的这么一种,就是模式啊做一个转换,转成这个读的这种模式,那怎么转换,那么用这个就是八块里边这个方法。
06:10
这个方法它叫做Fla方法啊,我写一下啊,Buffer点上flight被告模式转换,然后模式转换之后再来判断,如果里边还有剩余数据,那咱把它值或这么一个就是最中的。啊,那我写一下啊,咱们来一个Y。然后里边我写一下啊,就是八分。点上哈西,如果这里边还有数据,那咱们做一个输出。就是读取它这个数据啊,这里边我们给它变成一个字节的这种形式,然后buff点上里边的配方法,把它的数据给它取出来啊,就是一直这里边循环取的数据,然后这个写完之后,下面咱把那八块给它,就是清空一下我们用八块。
07:04
点上这个可令做星空,最终我们再做那个读的操作啊,咱们来一个final。点上瑞的方法,加上这么一个buffer。然后它返回到就是我们这个by read,就是循环一直在读,直到里边没有数据为止,到到到它的后一行为止,比如说这个值等于一就结束了,然后都写完之后,最后咱把这个a Fi,就咱那拆给它关掉。点上close,那现在呢,这个就是用八用这么一个不要代码,我们就最终完成了这个代码,就是按照我刚才说的这个步骤,咱们一步一步给它最终做到的,所以大家通过代码把这个发货的使用一定要特别熟练。之前呢,我们讲拆中基本上也都是这么做到的,所以这个我们就完成了,完成之后我们来做一个测试,看一下里面的效果是怎么样的。
08:11
这里边我把它执行一下,我们看一下效果啊。啊,这个应该写错了啊,你看我这里是不是少了一个转移的符号啊,少了一个斜杠给它加上啊,然后加上之后这里边我再进行一下啊,咱们看最终的结果。然后各位看这里边的数据是不是都读到了啊,就读到了我们最终的这些结果,所以现在呢,咱们就完成了这个八块的第一个小例子,通过八块进行这么一个读的一个过程。这个例子写完之后呢,下面呢,我们再来写个小例子,然后这个例子呢,我们通过另外一个八,再用这个INT8块来做这么一个例子的演示,咱就从往B中放内容,然后从里边取出来,就来写这么一个代码,那我在里边给个未来写一下啊。
09:08
首先在里边我还是练这么一个单元测试。然后咱们调解方法。Public word,比如我叫这个buffer。理化。把这个方法我们先创建出来,然后创建之后呢,首先第一个咱们先创建一个int bug,那这创建呢,这里边跟之前应该基本上是一样的,那咱们快速来写一下这个代码。在这里边呢,我们先创建出一个八块。这里边我来做个创建,我们用这个就是。印他。办法。也就是这个int b把它找到啊,然后咱们起个名字,我就叫B。
10:05
等于就是int buffer里边这方法叫alo,比如咱写一个值来一个B,它就表示我们现在创建了一个新的int类型的缓冲区,然后它的参数是缓冲区的容量,容量就是八个节,这是里边的第一部分,然后这个选完之后呢,我们现在比如说我想要向八块中里头放内容,就往八块中放数据,那我们来做一下啊,就是往八块里边。给他啊这么一些数据,那怎么做呢?比如说啊,咱写个规则,我这么来做,咱就来一个这么一个后循环,然后循环谁呢?后循环咱这个八份就是I等于零,I小于八份的大小,在八份里边有个方法,这个cap啊CPA表示德尔塔大小,然后咱通过它往里面放,就是每次往里边给它当前位,就是放数据,放完数据之后,当天位置再做递增,就是依此交一,比如第一个位置放,然后再放第二个位置,再放第三个位置,以此类推,那在这里边我就用。
11:13
八。它里边这个方法叫put的方法,往里边放内容,那这个内容呢,咱们就随便来一个规则啊,比如内容我就叫这个啊,就叫这里啊,然后烤鱼咱就来一个,比如这个二。乘以这个咱就随便写个规则啊。就是我们乘以里边的这个值。就是里边这个,比如说哎,搭上一,也如说第一次呢,放的值,那就是放这个就是二,然后第二次就是二乘以一加一,再乘以二加一,再乘以三加一,以此类推,让他每次放的值都不一样,最终把这个K请进来,然后最终就是他就是给当前位置放这个值,放完之后当前位置肯定要递增,就是每次加一啊,就是0123,以此类推,这样的话,我们把这个过程就完成了,完成之后呢,下面咱们从他中把那值给它取出来。
12:11
在取之前要做件事情,要先就是重置一下我们这里边这个缓冲区,也就是把它那个就是。是N放到零的位置,那咱用个八份里边这个方法,就这个利啊,放到这个位置,其实就做这个过程,然后放完之后,下面咱从里边来取这个数据啊,就是获取这个内容,那怎么获取这个代码,咱们刚才都写过了,这里边给各位啊,就快速来把这代码完成。首先啊,里边咱先判断一下八份中是否里边还有这个元素或者有数据,我们用这个哈西铝麦,如果这个里边有数据,那咱从八份中把这个取出来,报个艾方法来取就可以了,那这里边取,比如咱起个名字,我就叫这个Y,然后取完之后咱们把这个值,最终我在里边做一个输出啊,咱就用这个Y。
13:13
啊,咱就给它变成一个啊,给它输入一下。里边有多个值,所以现在啊,我们就把这个int这个八块这个小例子给各位做了演示,首先你看啊,建个buff块,然后往里边放数据,就是我们约定一个规则,然后下面把它从这最好从里边取出来这个内容,包括咱们再做一个输出,所以这是关于我们写的第二个小例子,咱们就完成了,完成之后我把这个例子,咱们也是做一个测试,看一下里边最终的这么一个结果。那咱们来试一下最终结果啊,我把这个执行一下,咱们看一下效果。然后各位看啊,这些值是不是就是往里边放的那些值,你看啊,里边有这二四,包括这个值,包括咱算一下,比如第一次这只是零嘛,二乘以一,那就是二,第二次这是一一加122乘二,那就是四,以此类推,最终往里边就放的这么一个数据,这是放的过程,然后这是我们取的这个过程。
14:18
所以现在啊,这就是咱们演示的针对buffer的最基本的使用,给各位做了一个说明。
我来说两句