查看: 31|回复: 0

    SpringBoot获取resources 目录下的文件的方式

    [复制链接]

    335

    主题

    335

    帖子

    791

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    791
    发表于 2023-9-14 17:53:46 | 显示全部楼层 |阅读模式
    SpringBoot获取resources 目录下的文件的方式

    在Spring Boot项目中,读取resources目录下文件的方式是非常常见的操作。为了确保项目的稳定性和可靠性,我们需要采取一种高效的方法来获取这些文件。因此,在本文中,我们将会探讨如何通读取resources目录下的文件,以及如何在读取过程中避免潜在的问题。下面我们就一起来看看有哪些方法吧!
    1、ClassLoader.getResourceAsStream()

    可以使用类加载器来获取资源文件的输入流。该方法接受一个资源文件路径参数,返回一个 InputStream 对象。

    InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("xiaozi.txt");

    该方法返回的资源文件路径是相对于类加载器的根路径。即程序编译后的classes文件夹所在目录,如需要加载其他目录中,需要在前面添加目录结构(如:static/xiaozi.txt)。注:static前面不能添加“/”。

    2、Class.getResourceAsStream()可以使用 Class 类的 getResourceAsStream() 方法来读取资源文件。该方法接受一个资源文件路径参数,返回一个 InputStream 对象。
    InputStream inputStream = this.getClass().getResourceAsStream("/xiaozi.txt");

    该方法返回的资源文件路径是相对于当前类的路径。因此,对于 resources 目录下的文件,需要在文件名前加上 "/" 前缀。例如: "/xiaozi.txt"。
    3、ResourceLoader
    使用 Spring 的 ResourceLoader 接口来加载资源文件。ResourceLoader 接口有一个 getResource() 方法,接受一个资源文件路径参数,返回一个 Resource 对象。
    @Autowired
    private ResourceLoader resourceLoader;

    Resource resource = resourceLoader.getResource("classpath:xiaozi.txt");

    4、ResourceUtils
    ResourceUtils 是 Spring 提供的一个工具类,其底层使用的也是类加载器的原理实现的。可以使用 ResourceUtils.getFile() 方法来获取文件对象。后续可以将文件转化为流文件进行读取。
    File file = ResourceUtils.getFile("classpath:xiaozi.txt");

    需要注意的是,该方法只适用于本地文件系统和 JAR 文件。对于 WAR 文件或者其他类型的文件,该方法可能无法正常工作。
    5、ApplicationContext可以使用 ApplicationContext 的 getResource() 方法来加载资源文件。该方法接受一个资源文件路径参数,返回一个 Resource 对象。
    @Autowired
    private ApplicationContext applicationContext;
    Resource resource = applicationContext.getResource("classpath:xiaozi.txt");

    6、File
    可以使用 File 类来读取资源文件。需要提供完整的文件路径。后续可以将文件转化为流文件进行读取。
    File file = new File("src/main/resources/xiaozi.txt");

    7、Paths 和 Files
    需要提供完整的文件路径。
    Path path = Paths.get("src/main/resources/xiaozi.txt");
    InputStream inputStream = Files.newInputStream(path);

    8、ClassPathResource
    可以使用 Spring 提供的 ClassPathResource 类来读取资源文件。该方法需要提供资源文件的相对路径。
    ClassPathResource resource = new ClassPathResource("xiaozi.txt");

    需要注意的是,ClassPathResource 会在类路径下查找资源文件,因此不需要提供完整的文件路径。
    推荐使用
    • ClassLoader.getResourceAsStream() :这是一种通用的方式,可以适用于大多数情况。

    • ResourceLoader :Spring 框架中,可以使用 ResourceLoader 接口来加载资源文件。这种方式适用于大多数 Spring Boot 项目。

    • ClassPathResource:如果只需要读取 resources 目录下的文件,可以使用。这种方式较为简单。

    • 结束语
    • 以上则为获取文件的几种方法。快来尝试一下吧!
    • 如果大家觉得文章内容不错,快去分享给更多小伙伴吧。







    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    免责声明:
    1、转载或引用本网站内容须注明原网址,并标明本网站网址“源码资源网”
    2、转载或引用本网站中的署名文章,请按规定向原作者支付稿酬
    3、对于不当转载或引用本网站内容而引起的民事纷争、行政处理或其他损失,本网站不承担责任
    4、对不遵守本声明或其他违法、恶意使用本网站内容者,本网站保留追究其法律责任的权利
    5、资源部分来自网络,不保证资源的完整性,仅供学习研究,如需运营请购买正版,如有侵权请联系客服删除
    6、本站所有资源不带技术支持,下载资源请24小时内删除,如用于违法用途,或者商业用途,一律用于者承担

    QQ|手机版|小黑屋|依星源码资源网-分享编程干货的网站 ( 鲁ICP备2021043233号-3 )

    GMT+8, 2023-10-2 00:23

    邮箱:312337667@qq.com 客服QQ:312337667(工作时间:7:00~23:00)

    © Powered by Net188.com X3.4

    快速回复 返回顶部 返回列表