资源之基础知识(一)
4.1.1 概述
在日常程序开发中,处理外部资源是很繁琐的事情,我们可能需要处理URL资源、File资源资源、ClassPath相关资源、服务器相关资源(JBoss AS 5.x上的VFS资源)等等很多资源。因此处理这些资源需要使用不同的接口,这就增加了我们系统的复杂性;而且处理这些资源步骤都是类似的(打开资源、读取资源、关闭资源),因此如果能抽象出一个统一的接口来对这些底层资源进行统一访问,是不是很方便,而且使我们系统更加简洁,都是对不同的底层资源使用同一个接口进行访问。
Spring 提供一个Resource接口来统一这些底层资源一致的访问,而且提供了一些便利的接口,从而能提供我们的生产力。
4.1.2 Resource接口
Spring的Resource接口代表底层外部资源,提供了对底层外部资源的一致性访问接口。
- public interface InputStreamSource {
- InputStream getInputStream() throws IOException;
- }
- public interface Resource extends InputStreamSource {
- boolean exists();
- boolean isReadable();
- boolean isOpen();
- URL getURL() throws IOException;
- URI getURI() throws IOException;
- File getFile() throws IOException;
- long contentLength() throws IOException;
- long lastModified() throws IOException;
- Resource createRelative(String relativePath) throws IOException;
- String getFilename();
- String getDescription();
- }
1)InputStreamSource接口解析:
getInputStream:每次调用都将返回一个新鲜的资源对应的java.io. InputStream字节流,调用者在使用完毕后必须关闭该资源。
2)Resource接口继承InputStreamSource接口,并提供一些便利方法:
exists:返回当前Resource代表的底层资源是否存在,true表示存在。
isReadable:返回当前Resource代表的底层资源是否可读,true表示可读。
isOpen:返回当前Resource代表的底层资源是否已经打开,如果返回true,则只能被读取一次然后关闭以避免内存泄漏;常见的Resource实现一般返回false。
getURL:如果当前Resource代表的底层资源能由java.util.URL代表,则返回该URL,否则抛出IOException。
getURI:如果当前Resource代表的底层资源能由java.util.URI代表,则返回该URI,否则抛出IOException。
getFile:如果当前Resource代表的底层资源能由java.io.File代表,则返回该File,否则抛出IOException。
contentLength:返回当前Resource代表的底层文件资源的长度,一般是值代表的文件资源的长度。
lastModified:返回当前Resource代表的底层资源的最后修改时间。
createRelative:用于创建相对于当前Resource代表的底层资源的资源,比如当前Resource代表文件资源“d:/test/”则createRelative(“test.txt”)将返回表文件资源“d:/test/test.txt”Resource资源。
getFilename:返回当前Resource代表的底层文件资源的文件路径,比如File资源“file://d:/test.txt”将返回“d:/test.txt”,而URL资源http://www.javass.cn将返回“”,因为只返回文件路径。
getDescription:返回当前Resource代表的底层资源的描述符,通常就是资源的全路径(实际文件名或实际URL地址)。
Resource接口提供了足够的抽象,足够满足我们日常使用。而且提供了很多内置Resource实现:ByteArrayResource、InputStreamResource 、FileSystemResource 、UrlResource 、ClassPathResource、ServletContextResource、VfsResource等。
文章转自:http://sishuok.com/forum/blogPost/list/0/2455.html#7103
资源之基础知识(一)相关推荐
- puppet自动化运维之puppet的资源基础知识
2019独角兽企业重金招聘Python工程师标准>>> puppet自动化运维之puppet的资源基础知识 此篇文章,主要是让读者提前了解puppet资源的一些知识. 变量和数组会经 ...
- 教室计算机文件共享方法,教程方法;34、共享文件--电脑基础知识电脑技巧-琪琪词资源网...
琪琪词资源网-教程方法;34.共享文件--电脑基础知识电脑技巧,以下是给大家带来的教程方法;34.共享文件--电脑基础知识,大家可以了解一下哦! 在一个几台机子连成的网络里,相互之间可以通过网上邻居共 ...
- Java-2-学习历程2:基础知识1,2,3文档、完整版视频资源、电子书籍下载
Java学习历程:基础知识1,2,3文档.完整版视频资源.电子书籍 1.基础知识1,2,3可到以下地址下载: http://download.csdn.net/detail/iot_li/886 ...
- 《计算机网络应用基础》模拟试卷(六),《计算机与网络应用基础知识1》模拟试卷...
<计算机与网络应用基础知识1>模拟试卷 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 <计算机与网络应用基础知识1& ...
- python计算wav的语谱图_Python实现电脑录音(含音频基础知识讲解)
前言 今天开始进入近期系列文章的第一篇,如何用 Python 来实现录音功能. 在开始"造轮子"之前,个人一直强调一个观点,如果有些东西已经有了,不妨直接去 github 上搜,用 ...
- 第一代电子计算机诞生的国家是( ),计算机基础知识习题.doc
计算机基础知识习题.doc (2页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 计算机基础知识题计算机的诞生:第一台电子计算机是1946 ...
- PHP内核介绍及扩展开发指南—基础知识
一. 基础知识 本章简要介绍一些Zend引擎的内部机制,这些知识和Extensions密切相关,同时也可以帮助我们写出更加高效的PHP代码. 1.1 PHP变量的存储 1.1.1 zval结构 Zen ...
- 华南理工计算机基础知识题,华南理工_计算机应用基础_随堂练习答案(2017年)
华南理工_计算机应用基础_随堂练习答案(2017年) (18页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 . . . .华南理工-计算 ...
- 华南理工网络计算机基础知识,2019年华南理工大学网络教育计算机基础随堂练习第一章...
2019年华南理工大学网络教育计算机基础随堂练习第一章 (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 第一章 计算机基础知识·第 ...
最新文章
- Win Ser 2008/2012 (R2) + NVIDIA Optimus 笔记本显卡
- 十大python开发软件-2017年最棒的七个Python图形应用GUI开发框架
- 评估指标:混淆矩阵、PR、mAP、ROC、AUC
- 数据挖掘之关联分析三(规则的产生)
- asp.net如何生成图片验证码
- 计算机user用户的密码存储在,windows存放用户密码的文件
- java直接读取rar,Java无需解压直接读取Zip文件和文件内容
- 牛客小白月赛13 解题报告
- mysql学习day04
- 初探单点登录 SSO
- 一些常用的前端基础操作
- android 15 activity跳转
- C++中convertTo对应的python代码
- 什么时候开始论文查重?
- python 循环高级用法 [expression for x in X [if condition] for y in Y [if condition] ... for n in N [if con
- Eat,PrayLove--结婚3周年
- c语言如何判定是32位系统还是64位系统
- cocos creator 设置开启canvas 透明后 半透明图片 不正常的 官方解决办法
- 微信小程序中简单使用echarts图表
- 7-18 二分法求多项式单根
热门文章
- Intel(R) Software Guard Extensions Developer Guide 参考中译文,阅读
- 手机引导式html,iOS14中引导式访问模式有什么用
- 华为p50预计售价鸿蒙是什么,华为P50没赶上首发鸿蒙系统,还有哪些值得期待的地方?...
- 乔梁老师的持续交付七巧板和三步法思维实践
- 小黑小波比.github问题总汇
- pinpoint 介绍
- 快手怎么引流卖产品?快手怎么引流卖货赚钱?
- 使用sklearn预测共享单车出行情况
- linux命令行引导iso,grub4dos引导硬盘iso安装manjaro linux
- Win10待机一段时间就会蓝屏