00:00
同学们,我们再来看下一个案例,本地文件先先前是本地文件写,下面呢,我们来看一个本地文件,然后怎么读,就是把文件,换言之就是我们用前面学的知识呢,将刚才的file 0TTXT文件里面数据读入到程序并显示在控制台,那么在讲这个案例之前呢,我们对这个图在做一定的这个修整,这个图呢,刚才老师讲的时候是。是,呃,为了让大家看起来啊,就说这个流呢,是从buffer到这个ne fair channel,然后呢,在这个写入到我们文件是这样子的吧,但实际上这个图呢,有点不准确啊,或者说刚才老师表述的可能不是非常到位,我做一个修正,这个图呢,很容易很容易让人认为是我们的fire channel里面包含了一个输出流,其实他这个刚好不是这样子的,他是这样子的同学们。呃,我我把这个图稍微修正一下,以免引起大家对他的一个误解。
01:06
实际上它是这样子的。哦,这样子我把这个支成底。好,我把这个图稍微修正一下。好,OK。实际上啊,实际上是这样的一个流程。就说嗯,实际上我是我们的这个input,呃,这个fire输出,输出流对象就是output,这个流对象里面包裹了我们这个channel,这样理解才是正确的,那么为为什么这么说呢?我们来看一下刚才这段代码,我们来再debug一下。我们在第八个一下,大家就看的比较清晰了,来看一下,还是以刚才的这个题,呃,这个案例来进行分析,大家看在这里呢,我们看到这个地方啊,同学们看。Fire。Output stream里面就包裹了什么东西呢?我们往下搂看这边是个是不是有个China?
02:04
哎,如果说我们在这里往下一直行,那么往下一行,我们再来看fire output stream,我们再来看一下。是不是在这里面就有这个fair channel,而这个fair channel正是我们的fair channel play employment。是这样子的吧,同学们,所以说是,呃,应该是这样理解,就是我们output STEM里面包裹了我们这个China,而不是我们这个channel包裹了output,相当于说我们对原生的这一个output流呢,里面内置了一个什么呀,我们可以认为是在原生的输出流对象里面内置了我们的一个通道,这样理解呢,就比较到位,看这个参里面在包含了我们一系列的内容。比如说呃,比如说这个RED1系一系列的一系列的数据,这样子理解好吧,包括他的其他信息都在里面。OK,那所以说这张图呢,这么去修正一下,就应该更清晰的反映了他的一个情况,好吧,这个老师说一下好了,紧接着我们继续往下来看下一个案例。
03:10
下个案例,下一个案例呢?我们来看一下怎么从一个文件里面读数据,并显示在我们控制台,还是写一个文件。呃,教类叫做ne。Fire channel。什么呀,零二没问题吧,同学们。OK。好,跟上老师思路就行了,非常简单,有些代码呢,前面咱们已经用过了,呃,我们看哪些地方是一样的,首先。首先我们要创建的是一个大家看看啊,现在我要从这个文件里面读东西了,是不是我们方向应该是这样写的,大家应该可以想象到老师会怎么去做看这边。好的,呃,这是文件,这个文件里面已经有内容了,比如说这面写的是hello啊什么什么什么,那现在我显然创建的是一个Java的输出流。
04:02
在这个输出流里面,我们包裹了或者说内置了文件的通道,那待会呢,显然是从这样子一个流向了,我要输呃,输入流,那么看病输出。这个就是输入流了。输入流。对,我怎么办呢?OK,大家可以看到。呃,划条线。就说我们把这个文件。放进来。对不对。放这里面来,放这里面过后呢,我们再把它放到哪里呢?放到一个buffer中。哎,这样子大家就很理解了,就是说待会我们这边仍然会创建一个bad buffer。相当于说我把,呃,待会这个通道fire通道里面的数据干嘛呢,我把这个通道的数据。我把这个通道数据呃写入,呃,那个相当于说这边是从这边读了,这边肯定用的是read方法了,因为从这个角度来看,从这个China来看,就是我把我的数据干什么呢?呃,就或者说这样理解是buffber,从我们这个圈里面读数据,那就不再是写这边肯定是用的关于这个China的一个读方法,读到这,读到这里面过后呢,我们再把它显示在我们的控制台。
05:24
这边呢,会有一个控制台。诶,我们这样写就行了。好,待会儿呢,我们就显示在这个地方啊,这是显示。好,大致的这么一个流程就说完了,那现在呢?我们再来往这边处理一下。好,第一个创建。同样创建这个文呃文件的输出流文件。文件的一个输入流。这个很简单,咱们来玩一把就行了哈。首先我们创建一个文件five,这个方法很多,咱们就六一个文件five,因为这个文件是已经存在的。
06:05
然后这个路径。刚才我们写了file01.txt。把文件生成。生成过后呢,我们创建对应的一个输入流。Fire input stream把这个文件放进去。对吧,VR。就是文件的一个输入流,当然它会产生什么呀,异常,我们将异常抛出。不做处理,紧接着咱们继续往下来走,下面呢,就要通过我们的输入流对象。获取对应的什么呀?Channel就是文件channel。但是还是一样的道理,它实际的类型,它实际类型是我们的BI channel implement。
07:00
对吧,它实际类型是这个。In。Late。In。好,这样就行了,往下继续往下走,现在就拿到了我们fair in stream get一个channel。拿到这个文件channel。拿到这个文件拆了过后呢?下一步我们该干什么呢?好老规矩,创建这个缓冲区。缓冲区,我们仍然是创建一个字节,字节缓冲区。Bad。Bit什么呢,Barber?DOK,此时此时,此时此刻这个文件的,呃,这个缓冲区原先我们在。在做的时候呢,我们是写的1024,这样不合理,因为这个地方可能可能过大,造成浪费,这次呢,我们换一个方法,因为文件的大小呢,其实我是能够知道的,所以说我就直接这样写。认识。
08:00
好,这个认是个让我把它转成int。好,我们就拿到了一个缓冲,缓冲区。BY拿到这个缓冲区以后,下一步根据刚才老师画的这个示意图,是不是我我们现在已经这个关联了,关联过后现在下一步该干什么事情呢?来接着往下走。下一步呢,我们就读取就是将。将什么呢?将。将这个环就是我们这个通道的数据。通道的数据。干什么呀?读入到。读入到八分钟。大家还记不记得这个时候用哪个方法呢?打开我们的幻灯片,大家看这边是个read read是从通道读取数据并放入到缓冲区,是这个吧,好的,那下面呢。方法就很简单了,就这样,就这样写就了,发。
09:04
Bar点。哪一个呢,就是败buffer。这相当于说把我通道里面数据读入到这个,那么这个通道它其实是跟这个输入输入有关联的,而这个输入流呢,跟这个文件关联的,就一条线就过来了。就是这条线就。过来了,明白好,相当于说这个地方我们就读到了什么呢哈。啊,等等等等。但是呢,现在你还没有显示,所以说我们还要把显示出来,这个时候在这个by buffer里面,它其实是字节,你不能直接显示,你要把它转成字符串,好下一步干什么呢?因为你这个是字节缓冲,说说转一下将。读将缓冲区的将字节吧,就这索将字节转成走串。哪里的字节字节字节数据呢?就是我们b buffer里面的。
10:00
字节信息,字节数据数据吧。转成就可以显示出来,此时此刻我们调用一个什么方法呢?非常简单哈,我就直接用输出就可以了。怎么输出呢,咱们六。六。一六。一个使菌,这个使菌呢,我们传入buffer。看这边有个八份。诶,这个地方我们看一下怎么做比较合理啊,把baduffer,我是bad buffer点什么呢?它这里面有一个方法,我们第一次用叫这个A瑞,就是它一次性的把这个buffer里面的这个数据以数组的形式给你返回,就是说白了就是返回我们BY的buffer里面的那个HB啊,就是就是那个字节数组。然后呢,转在里面,我再用60寸的形式把它转成,把转成一个十寸,进行一个输出代码就写完了,写完了之后不要忘记,忘了一件事情,关闭我们的这个流。
11:02
好的代码就写完了,我们现在呢,来看看代码是否运行,OK,跑一个。好,我们看一下,好这次就出来了,对吧,好的,那这就是我们这一个什么呢?使用发圈。就去读取数据的一个小案例。
我来说两句