00:00
好,然后呢,我们再补充一下,字符串当中新加的API还有两个,一个叫repeat重复,另外一个叫什么lines lines,好然后呢,我们看第一个repeat重复,那么它需要一个参数,里面是数字什么意思啊?哎,重复多少次?那么这个字符串原始的内容是Java,如果repeat括号里面传三,那么它将会复把这个字符串复制几次呢?三次,然后形成一个新的字符串,那么这个方法的呃,含义是比较简单的,所以我们来简单的演示一下就OK了。好然后呢,写个测试方法。好,测试方法来看一下,好首先有一个4STRING啊,String它的内容就是什么呢?啊,就是我们的Java好,然后调用它的方法叫repeat I repeat,比如来个五,来五的意思就是什么,让这个Java重复多少次呢?五次好重复完成了以后,产生一个新的串,然后打印输出来打印输出好,打印输出完以后呢,我们来运行好运行。
01:21
诶,那么这样的话,这个复制的字符串是不是就出来了,它可以非常方便的实现一些这个重复内容的一个生成,哎,重复内容的生成,好,那么这是它的repeat方法,哎,Repeat的方法,那么其中我们说最重要的啊,比较重要的一个方法叫什么呢?Lines lines是什么意思啊。是不是就是行的意思啊,诶,那么后面有点count,这是什么?计数是不是计数好,那么它的显然它的一个作用要用count方法,显然这是个什么流,哎,流也就是说我要把字符串中的内容按着行换行符来对其进行分割,分割的结果应该是一个什么呀。
02:12
哎,应该是多个字符串,然后呢,这多个字符串就形成一个流,诶那么类似的方法和我们之前的什么方法特别像啊啊split方法,Split方法也可以把字符串切割,然后呢,切割完以后它的结果是一个数组,哎,字符串数组,那么字符串数组也可以进一步处理,但是呢,字符串数组的处理没有流方便是不是?哎,没有流方便好,那么这是LIS,哎,LIS方法好,我们来再写个新的测试,好那么这是一个方法,首先是不是就需要有一个字符串啊,哎,需要有个字符串,好,我们先把它放着,然后呢,调用它的lines,诶,它的返回值就是一个stream,是个流,哎,是个流,然后呢,既然是流,诶那么各种流的操作我是不是都可以用啊啊叭,如说有中间操作过滤啊。
03:12
比较呀,排序啊等等,哎终止呢,也可以count,或者也可以用什么中止它for each,哎,便利好,那么for each好,lines.for for each好,For each需要个消费器来打印输出好,方法引用print好,那么现在这个流当中的内容就可以按照按照什么换行符来分隔,分割完以后呢,来对其进行一个便利好,那么这样的话,我们就发现这个处理是不是非常的简洁和方便啊,诶那么我们之前在处理文件的时候。读文件我们必须用什么?哎,我们必须要用一个buffer的reader,是不是最终来去读,读的时候read line read line一行一行的读,诶,那么如果我们直接就把一个文件读成一个大字符串,然后用流的思想来去处理,是不是就更简单了?哎,那我们来实际的来测试一下,用这个方法来做一下,好,那么首先我们来看,那你得有什么流啊,首先得有一个文件流,比如我们就以当前文文件为例,File input stream I file input stream,好,File input stream,然后呢,New一个file input stream,文件名叫什么呀?就是我们当前目录下的src下的什么I com,然后下面at特硅谷下面的什么JAVA11在下面的string。
04:55
test.java来,这样的话,我们把这个Java源文件就可以读了,好,那么在这里我想直接一下就读到一个。
05:06
读成一个字符串怎么做呀,大家注意可以先读到一个BAT数组当中来,是不是八分缓冲区好,然后呢?诶,这个BAT数组多大呀,M可以使用它的available方法,Available方法是获取这个流当中的哎,有效的可用的字节数,哎那么也就还没开始读,那么它的available就是整个流当中的字节数,哎,字节数好,然后创建好以后呢,我们就可以调用方法read读哪啊,读到buffer当中去好,读完以后呢,哎,注意这个buffer缓冲区当中就是。这个所有的文件内容了,但是呢,我们要字符串怎么做呀?哎,把这个字节数组是不是它变成字符串怎么做呀?New string,然后呢,以这个buffer为13,好,然后呢,这样的话,我们发现在这里有没有看到buffer的,Buffer的reader需不需要转换流,不需要转换流缓冲流通通都不需要,更加的方便,当然我们在这里处理完以后,把流要关闭啊,Close啊,关闭流好,然后我们来运行一下这个程序。
06:21
好,运行,诶,那么运行的结果就是什么?把这个文件的内容一次性的读到一个字符串当中,String,然后调用它的lines方法,就是把内容以换行符为分割,把它分割成若干个部分,那么这些个部分又组成形成一个什么流,哎,形成个流,然后呢,对其进行更加方便的简洁的快速的操作,哎,快速操作啊,我在这里仅仅是终止了一下,用打印输出语句终止了。好,那么诶,它是完全可以代替我们之前讲过的buffer的reader,哎,Buffer的reader更加的方便和好用,好那么这是新加的字符串当中的repeat方法和lines方法这两个方法。
07:17
好,然后呢,我们紧接着还。看一下IO当中的input stream,哎,刚才我们就用过了这个input stream输入流,我们之前在要要想实现文件的复制,我们必须有一个输入流,还得有一个输出流,然后呢,输入流要不停的把数据读到一个缓冲区当中,然后呢,再把这个缓冲区的数据原封不动的通过输出流诶给它写入,这样的话完成一个复制,完成一个文件的复制。那么为什么要用缓冲区呢?因为文件有可能会非常的大啊,如果这个文件有几十个G,那我们必须用流的方式,用缓冲区的方式去处理,去处理。
08:06
那么去这样处理的时候,我们就需要考虑,哎,这个缓冲区该设置多大呀,然后呢,你去呃循环的时候该怎么做,也就是说有一系列复杂的问题需要考虑,现在不需要了,JAVA11当中对input STEM有一个哎非常友好的方法,叫transfer to,哎,把它转移到哪个地方去,哎直接可以传输到一个输出流,好那么这是啊,非常有用的好用的方法,它不做,不需要做任何的处理,就是原始数据的一个复制,所以呃,这个方法我们来可以测一下,好那么在这个例子当中用到了,哇,这个用法,哎,哇,这个用法好,我们也来试一下用这个,哇,这个用法好,我们先写一个。先写一个测试叫什么呢?叫input stream test好,Input stream test好。
09:12
好,写好以后呢,我们来写个测试方法,写测试方法好,然后呢,我们在测试方法当中来去啊去读文件啊读文件,那么我们之前用文件流,文件流可以有输入流,诶那么我们说用类加载器是不是也一样的,类加载器它比文件流更好用,为什么呢?它可以读src下面的内容,是不是直接读啊,哎,它可以直接读,所以非常的方便,哎,非常的方便,好那么比如我们在这里src下我再复制一个。啊,复制个内容吧,这样我把一个炸文件,哎,我把一些个呃啊新建一个吧,我在src这新建一个文件就叫far啊然后呢,叫就叫FA,好,然后里面的内容,哎内容我把这个s string它的源码复制一下好放过来。
10:19
好,然后呢,这个文件内容是不是就有了,好file文件名叫file好了,我现在想把这个文件作为流来读,怎么做呀?首先需要有类加载器好,那么类加载器是怎么获取啊。I类加载器有多种获取方法,如果我想获取当前类的类加载器怎么做呢?哎,通过this对象get class获取到类对象,然后呢,Get class loader就可以获取到类加载器,然后类加载器去调用方法叫什么?叫load,叫get resource asre。
11:01
哎,把一个资源作为流,那么这个资源名字就叫范好,然后呢,拿到的,注意他拿到的是一个什么东西啊,就是一个input stream,哎,Input stream好,然后这个input stream,注意我们在这里是不是就可以调用它的transfer to,哎,Transfer to非常的方便,好那么我们想把这个src下这个文件给它复制到我们当前目录下去。当前目录下,那么就是我们的JAVA11这个项目目录好,那么该怎么做呢?哎,该怎么做呢?我们就可以使用这个最新的语法,哎,比较新的语法好,那么TRYTRY当中可以声明,声明什么声明可以应该被关闭的资源好那么被关闭的资源有谁呢?哎,有output是一个output stream,那么这个output stream是什么呢?我需要new一个file output stream好,这叫FILE2好,FILE2好,然后呢,这个输出流有了,输入流也有了,好,我们直接复制调用方法叫transfer to,哎,Transfer to好,然后呢,这样哎,我们就可以处理它了,当然我们说这个这个流,这个输入流要不要关闭呢?啊,也应该关闭来关闭好,这是。
12:35
的这个文件的一个复制,那么我们发现就一个方法是不是就可以搞定啊,并且我们在这里还实现了留的一个自动的关闭,哎,自动关闭好运行。好,那么运行的结果好,没有出现异常,然后呢,我们看一下刷新当前目录确定,诶文件在不在啊,哎,在打开以后呢,这个文件的内容跟我们的file一样不一样,哎,一模一样,一模一样,好所以这个transfer to可以干什么呢?把输入流中的所有数据直接自动的复制到输出流中,哎,输出流中好,那么这是一个非常实用的方法,非常实用的方法可以实现这个原始数据的一个快速的复制,而不需要再写一个循环,也不需要再用缓冲区,非常的方便啊,那么这是这个文件当中的新的API。
我来说两句