核心(Hutool-core)IO流相关资源(概述)

资源(Resource)在Hutool中是一个广泛的概念,凡是存储数据的地方都可以归类到资源,那为何要提供一个如此抽象的接口呢?

在实际编码当中,我们需要读取一些数据,比如配置文件、文本内容、图片甚至是任何二进制流,为此我们要加入很多的重载方法,比如:

read(File file){...}

read(InputStream in){...}

read(byte[] bytes){...}

read(URL url){...}
等等如此,这样会造成整个代码变得非常冗余,查找API也很费劲。其实无论数据来自哪里,最终目的是,我们想从这些地方读到byte[]或者String。那么,我们就可以抽象一个Resource接口,让代码变得简单:

read(Resource resource){...}
用户只需传入Resource的实现即可。

定义

常见的,我们需要从资源中获取流(getStream),获取Reader来读取文本(getReader),直接读取文本(readStr),于是定义如下:

public interface Resource {
String getName();
URL getUrl();
InputStream getStream();
BufferedReader getReader(Charset charset);
String readStr(Charset charset);
}
关于Resource的详细定义见:Resource.java(opens new window)

定义了Resource,我们就可以预定义一些特别的资源:

BytesResource 从byte[]中读取资源
InputStreamResource 从流中读取资源
StringResource 从String中读取资源
UrlResource 从URL中读取资源
FileResource 从文件中读取资源
ClassPathResource 从classpath(src/resources下)中读取资源
WebAppResource 从web root中读取资源
MultiResource 从多种资源中混合读取资源
MultiFileResource 从多个文件中混合读取资源
当然,我们还可以根据业务需要自己实现Resource接口,完成自定义的资源读取。

为了便于资源的查找,可以使用ResourceUtil快捷工具来获得我们需要的资源。

posted @   vello  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
点击右上角即可分享
微信分享提示