首页 > 其他分享 >Spring30 - Resource资源读取

Spring30 - Resource资源读取

时间:2023-02-08 17:23:00浏览次数:36  
标签:Spring30 Resource 读取 URL 接口 IOException throws 资源

资源操作:Resources

8.1、Spring Resources概述

Java的标准java.net.URL类和各种URL前缀的标准处理程序无法满足所有对low-level资源的访问,比如:没有标准化的 URL 实现可用于访问需要从类路径或相对于 ServletContext 获取的资源。并且缺少某些Spring所需要的功能,例如检测某资源是否存在等。而Spring的Resource声明了访问low-level资源的能力。

Resource接口

Spring 的 Resource 接口位于 org.springframework.core.io 中。 旨在成为一个更强大的接口,用于抽象对低级资源的访问。以下显示了Resource接口定义的方法

public interface Resource extends InputStreamSource {

    boolean exists();

    boolean isReadable();

    boolean isOpen();

    boolean isFile();

    URL getURL() throws IOException;

    URI getURI() throws IOException;

    File getFile() throws IOException;

    ReadableByteChannel readableChannel() throws IOException;

    long contentLength() throws IOException;

    long lastModified() throws IOException;

    Resource createRelative(String relativePath) throws IOException;

    String getFilename();

    String getDescription();
}

Resource接口继承了InputStreamSource接口,提供了很多InputStreamSource所没有的方法。InputStreamSource接口,只有一个方法:

public interface InputStreamSource {

    InputStream getInputStream() throws IOException;

}

其中一些重要的方法:

getInputStream(): 找到并打开资源,返回一个InputStream以从资源中读取。预计每次调用都会返回一个新的InputStream(),调用者有责任关闭每个流
exists(): 返回一个布尔值,表明某个资源是否以物理形式存在
isOpen: 返回一个布尔值,指示此资源是否具有开放流的句柄。如果为true,InputStream就不能够多次读取,只能够读取一次并且及时关闭以避免内存泄漏。对于所有常规资源实现,返回false,但是InputStreamResource除外。
getDescription(): 返回资源的描述,用来输出错误的日志。这通常是完全限定的文件名或资源的实际URL。

其他方法:

isReadable(): 表明资源的目录读取是否通过getInputStream()进行读取。
isFile(): 表明这个资源是否代表了一个文件系统的文件。
getURL(): 返回一个URL句柄,如果资源不能够被解析为URL,将抛出IOException
getURI(): 返回一个资源的URI句柄
getFile(): 返回某个文件,如果资源不能够被解析称为绝对路径,将会抛出FileNotFoundException
lastModified(): 资源最后一次修改的时间戳
createRelative(): 创建此资源的相关资源
getFilename(): 资源的文件名是什么 例如:最后一部分的文件名 myfile.txt

Resource的实现类

Resource 接口是 Spring 资源访问策略的抽象,它本身并不提供任何资源访问实现,具体的资源访问由该接口的实现类完成——每个实现类代表一种资源访问策略。Resource一般包括这些实现类:UrlResource、ClassPathResource、FileSystemResource、ServletContextResource、InputStreamResource、ByteArrayResource

Resource类图

上述Resource实现类与Resource顶级接口之间的关系可以用下面的UML关系模型来表示

标签:Spring30,Resource,读取,URL,接口,IOException,throws,资源
From: https://www.cnblogs.com/Ashen-/p/17102578.html

相关文章

  • 【Spring-boot-route(二)读取配置文件的几种方式】
    SpringBoot提供了两种格式的配置文件,分别是​​properties​​​和​​yml​​。SpringBoot最大的特点就是自动化配置,如果我们想修改自动化配置的默认值,就可以通过配置......
  • for读取整行数据
    secur1ty@localhost:/tmp/test2$cattest.txtadduser3.118apt2.2.4apt-transport-https2.2.4base-files11.1+deb11u3base-passwd3.5.51bash5.1-2+b3secur1ty......
  • 17.读取控制台
         ......
  • rpm -Uvh升级包报错:error: db5 error(11) from dbenv->open: Resource temporarily un
    问题背景针对系统漏洞扫描,对部分包进行rpm-Uvh升级时报如下的错误:[root]#rpm-Uvhpolkit-0.112-26.el7_9.1.x86_64.rpmerror:db5error(11)fromdbenv->open:Res......
  • WPF 使用 StaticResource、DynamicResource、RelativeSource
    StaticResource(静态资源)依赖属性静态资源在第一次编译后即确定其对象或值,之后不能对其进行修改。StaticResources的适用场合:(1)在资源第一次引用之后无需再修改资源的值。(2......
  • WPF-03 资源之Resources
    WPF中有两种类型资源StaticResource、DynamicResource,资源本质上就是一个对象。 这节我们主要介绍静态资源StaticResource(静态资源)在第一次编译后就确定的......
  • WPF-03 资源之Resources
    WPF中有两种类型资源StaticResource、DynamicResource,资源本质上就是一个对象。 这节我们主要介绍静态资源StaticResource(静态资源)在第一次编译后就确定的......
  • Spring14 - @Resource注解实现注入
    @Resource注入@Resource注解也可以完成属性注入。那它和@Autowired注解有什么区别?@Resource注解是JDK扩展包中的,也就是说属于JDK的一部分。所以该注解是标准注解,更加具......
  • Go读取yaml文件到struct类
    Go读取yaml文件到struct类原创 周钦雄 程序猿牧场 2023-01-1021:34 发表于广东1、yaml文件准备common:secretid:AKIDxxxxxsecretKey:3xgGxxxxregion:ap-......
  • 5.2【微信小程序全栈开发课程】首页完善(二)--读取当前分数
    上一节实现了点击加减分的按钮,在数据库会插入一条数据。但是点击编译按钮(在微信开发者工具的右上角),总分又变成了0。这是因为虽然在数据库中添加的记录,但是当前总分并没有读......