00:00
各位同学大家好,在前面内容中呢,咱们已经完成了IOC容器面向切面边程AOC,包括是不操作,那下面呢,我们继续来学习,咱们来学习此文里边的另外一部分资源操作results。那首先我们先做一个总体的说明,大家知道啊,在Java里边呢,有一个类叫URL,这个类呢虽然说能提供一些相关的资源操作,但是它并不能满足对这种低级别资源的访问,比如说我现在想从类路径下去那种,或者说在外部项目中想取到相对于contact泰的资源,它并不能做到。另外里边还缺少一些相关的功能,比如说我现在想检测某资源是否存在,它里边没有这个相关的功能。而这个时候呢,我们出现了死里边这个resources,它能提供针对低级别资源的访问能力,所以咱就学这个资源。
01:00
位,然后这里边我们主要学什么呢?给各位做个说明,大家看我课件里边啊,列出了这么几部分。我把这部分给大家截过来,咱们先做个介绍,首先第一部分给大家讲解一个接口,这接口叫result接口,里边有各种的方法,包括里边有它的实现类,针对不同的场景进行资源访问,比如说取类部景,取网络资源,取文件系统资源等等。然后第二部分我们学第二个接口,这个接口它叫做resource load。第三个接口resource load while,包括咱们用resource作为属性,以及我们通过通配符等方式来获取资源等内容。以上就是学到resource中等计本内容,咱们学S中的资源访问。那下面呢,我们先看第一部分,关于这个叫resource接口,把这个先做一个讲解。
02:01
大家看我课件里边啊,Spring里边的的接口位于org spring framework IO的包里边,它是一个很强大接口,用于抽象对低级资源的访问,就是它是一个接口,然后接口肯定有很多的时现类,这时现类咱一会儿具体说,那我们看一下啊,这个接口呢,它继承了这个接口,然后里边有很多的方法,比如说我们来看一下啊,比如第一个你看exist是不是判断是否存在,包括里边是否是文件,得到里边相关信息,比如说得到你这文件,得到文件名字,得到描述等内容,这是它里边的这些基本方法。另外它继承这个接口中有一个方法叫get input,这些方法能实现对低级别资源的访问,这是一个接口说明,然后咱们继续来看啊。因为它是一个接口,或者说是一个抽象,它本身并不提供资源的访问实现,所以它有很多的实现类,我们用的话就用这个resource接口中的各个实现类,那这个咱们通过这个来看一下啊,我在里边带着各位看一下,咱们找到这个叫resource。
03:19
Resource,注意是。org啊这个包里边的,然后大家看它是一个接口,在接口里边我们看到啊,是不是有很多的实现类,这些实现类针对不同的场景进行访问,那咱们啊,下面来说一下它的实现类,然后咱们进行详细的演示,那咱们先看一下啊,有哪些实现类。首先大家看第一个时现类,就是我课件中列出来的叫ul resources,这什么意思呢?访问网络资源,比如说啊,你是括你的文件系统中,它也能用这个东西资源,这是第一个ul,然后看第二个啊,第二个好理解。
04:13
什么意思?获取我们类路径里边内容就是你的class里边这些资源文件,这是第二个,第三个叫file system,访问文件资源中的系统。比如说我们现在啊,这个C盘里边有个文件,我D盘中有文件,用它能访问。另外里边还有还有一个叫contact,这在web项目中进行使用,另外有input数入流的,有bitra,就是字节数组的等等。时间类,这是我们对于它的一个介绍,咱们重点演示前面三个,第一个u resource,访问网络资源,第二个classs pass resource访问类注定下的资源,第三个file system resource访问文件系统中的资源。这是咱们对于这个基本说明,那下面呢,我们做一个具体的演示。
05:06
首先我们先搭建一个模块,然后在模块中我们进行演示,那咱们下面进行搭建。我现在呢,在我这个项目中,咱们建一个子模块,我在里面创建,然后这个模块我给它起个名字,就叫做此文6RESOURCE,咱们进行创建。把这个我们先创建出来,这是我们的模块创建,然后创建模块之后里边的依赖咱们在富城中这些都引过了,所以咱们直接在里边进行操作,那我们来写一下啊,找到这个模块应该在我们的这个位置。然后在里边呢,首先我先建个包,我在里边创建这个包,我们叫com点。At硅谷点上,然后加上一个resource。
06:02
这个完成完成之后呢,咱们先演示里边这个相关的实现类,那再演示啊,首先我们演示第一个实验类,就是用这个ul resource进行网络资源的访问,那咱们来写一下啊,我在resource里边呢,首先我先建个类,我就叫ul resource。然后见完之后,我这里边加个注释啊,咱们是演示u resource。访问网络资源。这个是我们写到的啊,然后在里边我们加上方法,咱们进行这个测试,那我写一下啊,首先我先演示第一个,大家看我课件里边写到啊,用这个类呢,我们可以访问网络资源,比如说HTP作为前缀的,FTP作为前缀的,还有file作为前缀的,咱重点演示HTP,还有啊,就是我们的,比如说百度这个地址,比如说你文件中的某个文件等等。
07:10
这个啊是咱们要演示的,那咱们下面写一下啊,在这里边呢,第一个我先写上一个方法,就是访问这个前缀是HTTP的这个资源,那咱来个方法啊,这方法写一下我就来一个public,呃,咱为了方便啊就加个了,加个然后起个名字,我就叫这个load。啊,这个。URL resource就是加载这个。这个资源。就写它了啊,然后在里边呢,传上你的路径,这路径可以是HTP,可以是我们那个就是或者是那个FTP等等。那咱们加上一个参数,我先写个方法啊,一会咱们再进行测试,这个就叫pass,现在给方法完成,完成之后咱们一会儿会写个main方法在里边,我们进行这个测试。
08:07
然后传入你的内容,那咱把方法给它完成,这一方法怎么做呢?写一下啊,首先我先把步骤写一下,然后咱们进行实现,首先它的第一步肯定是创建你这个接口的这个实现类。把这个肯定进行创建啊,实现类的对象,咱目前用的这个对象是URL resource,就是它这是第一部分,然后这个写完之后,我们的第二步,那咱就调方法进行访问啊,或者就得到它的资源,然后把里边的方法调用,得到它的信息,就是获取你的资源的一些相关信息,主要就这过程,那咱们快速写一下啊,第一部分URL。Resource,注意别找错啊,是咱这个,然后我起个名字就叫ul。
09:02
等于上一个。URL resource,这是我们的第一部分啊,或者说用它的接口叫resource是一样的啊,咱就写上它了,然后写完之后咱们注意啊,在这个result里边加上咱们传过来这个路径,就是这个pass。咱们啊,看它的这个源码中啊,在它这里面有一个有仓构造传入路径,然后根据路径来做它的相关内容,所以咱们把这传进去,这里边有异常,咱们加上一个try catch给它处理一下。所以这是我们的第一部分。这个咱完成,然后完成之后呢,咱通过ul能得到你资源中的相关的信息,那咱们来给他获取一下啊这个信息。这个信息呢,为了方便,我就直接啊把它就输出一下了,首先第一个我们调一个方法,U里面的get file name就是它的名称,我们给他得到,然后得到之后,比如说我再来写一个啊,咱们直接得到它这个ul这个地址啊,把地址得到下。
10:11
这里边啊,还有异常,咱们把它变成except,比如说我们可以再获取一个URl.get description它的描述信息。描述得到之后,比如说我们再得到一个,咱就把那它那个内容的输入流得到啊,然后点上一个read,咱给他做一个输出,所以现在啊,咱们就完成了我们这个方法,通过这个方法咱们能获取网络资源,包括你这个HTP开头的,包括开头的这个内容,那咱们下面做个测试。首先啊,我们的第一部分,比如说在里边啊,我就写上一个路径,咱们写一下啊。HTP冒号杠杠,我就写一个3W点百度点。com,把这个路径加上,这是一个P开头的网络资源。
11:06
然后我在里边加上一个注释,HTTP这个前缀开头的,然后咱们执行看一下效果是怎么样。下面啊,我们来做一个测试,咱们看最后的结果。然后大家看啊,内容是不是输出了,包括你看啊,有你的文件名字啊,有我们这个地址,包括里边这个输入流啊,咱就用read给它输出一下,所以现在这个证明我们就正确了,这就是获取HTTP前缀这个内容,那这个之后呢,比如说我们再获取一个,咱再获取一个什么呢?就是这个file作为前缀的这个部分,那我们来写一下啊,咱们在里边调一个方法。我加个前缀叫冒号,然后加上你的文件名字,这文件我先写个名字,一会咱们来个文件就叫at硅谷点TXT啊,咱就调用它这个给它先注掉了。
12:06
然后这个写的时候注意啊,我们这里边需要有一个文件,但这个文件呢,有一个特点,你需要放到项目到根路径下啊,注意是根路径下,什么叫根路径呢?给大家说明,比如我现在啊,有同学说我可以放到result里边,Result不是根路径,你需要放到你的根路径下才能测试,大家给他创建一下,然后做个测试。我们呢,需要把这个名字的文件建到这个文六的这个项目,这个就是这个目录下边,那咱们建个文件at硅谷点TXT,我随便啊加入一个内容。现在这完成,注意这个位置啊,在我这个死人六的这个下目录下边,因为它叫根路径,然后现在呢,我们把它执行一下,看一下这个效果,咱们执行,然后大家看里边各位看信息是不是都输出了,所以证明咱们这就完成了,注意这个测试中啊,这文件别放错位置。
13:06
所以现在啊,我们就讲到这里啊,当然你可以写它的绝对路径啊,就是在盘符等等这个路径,咱就以这个为例做个演示,所以现在第一个实验类我们就完成了ul resource访问网络资源中内容,这个咱们就说到这里。然后这个之后我们继续来看啊,下面我们看第二个实验类叫class pass resource这什么意思呢?是访问类路径下内容,也就是说你现在啊,在这个项目这个resource这个里边。我们建个文件,然后这个文件呢,最终编译之后,它会放到你这个class里边,这就叫类路径下,它可以把这个得到,这个叫pass resource。那咱们啊进行演示。首先啊,我在这里边呢,就是这个里边我再来建个类,这个类咱们起个名字就叫DEMO。
14:03
我们进行创建,然后创建之后呢,在这里边我们来写一下它的具体的代码,我这里加个注释啊,就是访问我们的类路径下的资源。那咱们啊,下面进行演示,首先啊,跟刚才一样,咱们也是写个方法public。Static,我起个名字啊,还是叫这个load。Resource。就叫load这个pass resource啊。这时我们写一个方法,然后方法中加入我们那个路径,我们加上一个参数,就是词缀pass,这个完成,完成之后在里边写上我们具体内容,这个代码很简单,跟刚才类似,咱就快速写一下啊,首先第一步创建一个对象,这对象就是class pass resource,这对象咱们把它进行创建,那这里边把来写一下pass。
15:10
Resource加上这个角resource啊,等于new上一个pass resource里边加上pass这个路径,这就是第一部分,然后这个之后,后面呢,咱就获取一下它里面的相关信息,那我就给它输出下,比如说第一个啊,咱就把里面那个。文件名字咱就输出一下了,然后第二个,比如说我再输出一个resource里边,咱们把它那个描述输出一下,因为现在读的是文件,比如咱最后啊,把那个文件内容给它也获取一下。获取一下文件内容啊,咱给他获取一下啊,然后怎么获取呢,我们就加上一个input。Stream啊,咱加一个输入流,用这个流的方式进行操作啊。加上一个。
16:02
等于这个resource里边get input stream,得到这个文件的输入流,然后得到之后把它最终输出,里面有异常,咱们加上拆开着给他处理一下啊,那我们写一下啊,首先这个代码应该是一个模板师的代码,各位应该很熟悉,我就写一个beat。等于上一个这个bit。加上一个这个1024啊,通过它进行读取,然后来一个这个Y。在里边我们写一下,就是因点瑞的这个B。啊B如果说它不等于这个负一,那这个时候我们进行这么一个就是输出啊,把它的值最终输出一下,我们加上一个就是上一个。坠。然后在里边加上这个B啊,把它直接输出下了,所以现在啊,咱们把这个就完成了,通过这个方法我们能获取类路径下的资源,我这个代码是通过流的方式把它输出一下啊,这属于一个基础代码,如果这个代码各位看不懂,那我觉得你把基础功能学会之后,就是Java基础学会之后来学我们的课程,这属于流的一个基本操作重点咱们演示它。
17:26
这个就完成啊,完成之后我们做一个测试啊,加上一个main方法,然后main方法中调这个方法咱们传入我们的文件,我们就加一个at硅谷。TT了,然后这个文件注意啊,咱们现在把它放到我们的类定下,我就在resource下边建这个文件。注意名字啊,跟这个保持一致,这名字不要写错啊,在里边我就随便写几个值,比如写一个at硅谷啊,就加他了啊。然后下面我们测试一下,试一下这个效果。
18:02
给他执行。然后大家看啊,你看啊,最终我们的内容中,呃,这么写看着不明确啊,咱们把这值稍微改一下啊,比如叫哈硅谷。像这个啊,咱们重新再执行一下啊。然后看最后的内容,大家看啊,这是文件名称啊,这是它的描述信息,然后这个就是文件中内容,Hello at硅谷,这就是我们演示的第二个实验类pass resource,用于读取类路径下中的资源,用它可以得到,就是你放到result下边,它最终编译之后,在class里边有这文件,把这个录下的文件用这个实验类最终可以给到读取到。这就是第二实验内啊,咱就说到这里。
我来说两句