大家知道,spring项目一般都有一个resources目录,一般存一些配置文件。
为了读取这些文件,spring设计了Resource接口,定义了三个方法?
存在?可读吗?可打开吗?
并定义了Resource对象到URL、URI和File对象和文件名字符串的转换
public interface Resource extends InputStreamSource { boolean exists(); default boolean isReadable() { return this.exists(); } default boolean isOpen() { return false; } default boolean isFile() { return false; } URL getURL() throws IOException; URI getURI() throws IOException; File getFile() throws IOException; default ReadableByteChannel readableChannel() throws IOException { return Channels.newChannel(this.getInputStream()); } long contentLength() throws IOException; long lastModified() throws IOException; Resource createRelative(String var1) throws IOException; @Nullable String getFilename(); String getDescription(); }
这个类只有一个父类,InputStreamSource,也就是说Resource可以任意向Inputstream对象来进行转化
public interface InputStreamSource { InputStream getInputStream() throws IOException; }
对于不同的文件类型,都有不同的子类实现:
文件:FileSystemResource
classpath资源:ClassPathResouce
URL资源:UrlResource
InputStream资源:InputstreamResource
Byte数组:ByteArrayResource
大家最常用的应该是
Resouce resouce=new ClassPathResouce('*.properties');
InputStream in=resouce.getInputStream();
其底层是通过java提供的class或classLoader将文件对象解析成InputStream