Spring提供一个Resource接口代表底层外部资源,提供了对底层外部资源的一致性访问接口。
1)InputStreamSource接口:
getInputStream:每次调用都返回一个新鲜的资源对应的java.io.InputStream字节流,调用者使用完毕后必须关闭该资源。
2)Resource接口继承InputStreamSource接口,并提供一些便利方法:
exists:返回当前Resource代表的底层资源是否存在
isReadable:返回当前Resource代表的底层资源是否可读
isOpen:返回当前Resource代表的底层资源是否已经打开
getURI:如果当前Resource代表的底层资源能由java.util.URI代表,则返回该URI
getURL:如果当前Resource代表的底层资源能由java.util.URL代表,则返回该URL
getFile:如果当前Resource代表的底层资源能由java.util.File代表,则返回该File
contentLength:返回当前Resource代表的底层文件资源的长度
lastModified:返回当前Resource代表的底层资源的最后修改时间
createRelative:用于创建相对于当前Resource代表的底层资源的资源
内置Resource实现
ByteArrayResource
ByteArrayResource代表byte[]数组资源,对于getInputStream方法返回一个ByteArrayInputStream
FileSystemResource
FileSystemResource代表java.io.File资源,对于getInputStream操作返回底层文件的字节流,isOpen将用于返回false,表示可多次读取底层文件的字节流
URLResource
代表URL资源,用于简化URL资源访问,isOpen用于返回false,表示可多次读取资源
URLResource一般支持如下资源访问:
http:通过标准http协议访问web资源,如new URLResource("http://url address ")
ftp:通过ftp协议访问资源,如new UrlResource("ftp://url address ")
file:通过file协议访问本地文件系统资源,如new UrlResource("file:d:/test.txt");