00:00
你将通话记录就该写在数据文件当中,那就应该用到另外的一个跟IO相关的类了,这个应该是什么东西啊,Out,你那个in我们已经用过了吧,那现在应该是那个out了,所以我现在呢,就准备用那个叫out点,它也应该提供对应的方法,你输入应该有read的方法,那你输出应该有RA方法,所以我们还得来改我的程序啊,咱们这里来date这里呢,光有它不行了,Public我们叫做VO,我们叫做right,那你这个right呀,咱们看看我这个地方写个它吧,嗯,然后呢,我这里呢,就给我来一个咱们叫object,诶,咱们就这么写就行了啊呃,或者呢,我们一般也就传个字符串,你传对象也可以,传字符串也可以嘛,所以再来拷贝一个啊来,然后呢,写上一个叫string,诶,我们传一个我们的string啊,我们的date吧,嗯,好啊,诶不对,应该是A啊。
01:01
那我上面这个也叫date吧啊,反正类型不一样嘛,嗯,好了,那我写完以后,那我接下来我们的这一块的IO就不对了啊,咱们这一块呢,应该给它稍微的变一变,所以来我们加上把这两个方法给它重写了,重写了的时候,那么同学们想想吧,那我这个肯定是应该把对象传进来对不对,但你对象传进来其实最终也是把一个字符串放到文件当中嘛,所以我完全可以,怎么办呢?我这么写,我这么写了以后干嘛呢?我写个date.to string,我那么写可以吧,哎,可以啊,那么也就意味着我真正要去做的操作是什么呢?是将我们的啊,来将我的数据字符串给它生成到文件中啊文件中,那你要生成到文件中,你是不是应该有那个流啊,你读有那个reader,那你写呢,应该有个write之类的吧,所以我在当前场合下,我在这里还要准备一下。
02:01
准备什么呢?我写上,嗯,我在上面写吧,我在上面写上叫我们叫做嗯,就叫print吧,Print啊,咱们叫print,有个叫有个叫buffer的reader,那我这里有个叫print,有个叫输出字符流,那我这里写个out啊它诶别out了,直接写个得了啊,咱们这里叫等于not啊,好了,写完以后,那就意味着只要你把路径告诉我,那我就知道我该如何去完成我们的输出,所以new我们叫做printer,但是你真正要把文件放到,把数据放到文件里面,它还应该用的是那个节流,所以我们new我们叫output stream,那么里面是我们的new叫fair output stream,然后把那个pass给它传进来,你把pass传进来以后,为了防止它出问题,我们再给它一个字符编码,叫UTF杠八,嗯。好了,那这个时候它一样还会出问题,它会出问题的话,我们这里给它来啊,给它包装一下,诶好,嗯,行了,那这个writer呢,我们现在已经有了,那么有了的情况下,我这里该怎么办呀?是不是直接输出就完事了,那所以我们的writer啊,我们的writeer点我们是不是只要print就行吗?它的print是不是就打印的意思,说白了不就输出的意思吗?所以我们直接把那个date给它传进去不就行了吗?对不对,诶就是这样,但是我们这个print啊,我们的这个write我们点一下,点完以后同学们会发现它是write,对不对,然后里面会有一些其他的吧,但是我们现在呢,我希望什么呢?我希望当我的数据一来,我就给他输出到文件当中,你别等着,为什么呢?咱们每秒钟两条,那时间太长了,所以呢,我这里干嘛呢,我write.plus啥意思,是不是把它我们留。
04:00
当中的数据给它直接放到文件里面去啊,诶就是这个意思啊,因为每秒钟两条,它太时间太长了啊,所以我们这里呢,就别考虑效率的问题了,来一条我刷一条,来一条我刷一条,诶这就完事了,这样我们就这么来做,你这么来做的话,那接下来我们该close了,来关闭啊,来写上叫释放我们的资源啊关闭就可以了啊,那关闭呢,跟前面完全一样啊,我们的writer,嗯,在这里呢,我们写上叫做if啊来括号,嗯,如果它不等于啊,它不等于,那诶给它关掉,嗯,点我们的close好了,行了,那咱们这个基本上没啥东西,只要输出的没问题那就OK了,那行,那现在呢,我们这边呢,该准备好的都准备好了,我来试一试吧,我现在回到那个producer当中,那我这里可就该out点什么了,点我们的right了,这个right我前面是不是恰恰有个对象啊,这个对象把这个log给它放过去,给到放过去以后。
05:00
哦,那这个时候我点击这个right,你会发现同学看他这个right最终走的是什么,他最终走的是不是我们的,诶,跑哪去了?在我们这里最终走的应该是我们这个方法吧,但是我看调的是这个方吧,他会把当前的对象调的什么东西啊,To string,那也就意味着我当前真正输出的这个数据是谁,由谁来生成这个格式的,是不应该用string来生成的,那所以我们刚才的这个,它里面是不是应该有个突使菌方法啊,哎,所以我们来我们这里呢,可以重写它的那个突使俊方法,但是默认情况下,它会按照这种方式来重写,这个可就不是我想要的啦,我想要的不是这个样子的,所以把这个去掉啊,我想要的是什么样子的呢?就是按照它的这个格式,第一个是我的主教用户,第二个是我的被调用户,第三个是我当前的通话时间,这是我的通话时长,中间用tab键给它分隔开。
06:00
那所以呢,我的第一个应该是我的扣一再加上斜杠T,再加上扣二,再加上我们的斜杠T,然后呢,再来加上我们的那个Co time,哎,再加上一个斜杠T啊,然后再来一个再加上我们的Du,诶把这个加上你这个写完之后,只要你调用的是to string,它会按照这个格式把字符串生成好,然后呢,给它print就直接放到文件当中了,那这样的话呢,我们的producer就算是完成了,完成以后,那么这样的话呢,我们就可以循环循环不断的去生成,但你这个循环是不是很快呀,这个也不是我想要的,我想的是每秒是吧,每一秒生成两条数据,那就意味着我这个循环当中是不应该休眠一下呀,对吧,我生成一条我休眠一会,生成一条休眠一会儿,所以我们RI点我们的sleep啊,给他个。是五五百啊,哎,500毫秒不就是0.5秒嘛,那一秒钟不就两条了嘛,哎,所以我们这么来写,你这么写完以后,那我现在呢,可以简单的试一试,看一看我们的效果啊,首先我先别看文件,为什么呢?因为那个文件呢,我不知道对不对,所以呢,我先这样。
07:16
把我们这个log呢,我先放这儿,我看在控制台上他能不能打印,对控制台上打印的对,我再回过头来看这个文件对不对啊,所以我现在把这个里面的东西啊,我全删掉,我不要了,我先删掉空的啊,我空的我空的以后现在呢,我们直接给他来执行一下,我回到咱们的启动,我点一下,反正这个路径是对的,那么对的情况下,我运行咱们先看控制台啊。我们这个控制台。看看我一会写错了是吗?我来确认一下,来把这个去掉,好像确实不太对,嗯,那我这个地方produce啊,If哪个if啊。
08:02
我这个没考对是吧?啊,应该是这个是吧,嗯,刚才那个错误就导致两个永远跳不出去了吧,是吧?啊是循环了啊呃,这个地方来啊,咱们给它再来运行,运行以后看结果啊。诶,这是是我感觉怎么怎么还这么快呢啊五百一个,一秒钟两个是吧,嗯,行吧,那大家可以看到是不是正在不断的生成啊,那么光看这没有用,因为看这的话只能代表我们的数据有了,但是你能不能放到文件里面,是我们还要看这啊,所以我们刷新一下啊,刷新以后把这个打开,打开以后诶打开。不应该呀,点一下。你看这么看是吧,啊,是不是有了,哎,有了,所以我们在当前的场合下,我们的数据文件就在不断的生成,不断的生成,那你不断的生成之后,只要数据本身没有任何的问题,那我们就可以用干嘛呀来采集这个日志的数据,这个咱们是做过的,对吗?咱们做过的话,那不就好办了吗?所以我们的这个生产者的项目咱们就算是做完了啊好了,那这个呢,咱们就。
我来说两句