SpringBoot打包后無法讀取到resource下的資源文件的解決
前言
提示:這里可以添加本文要記錄的大概內(nèi)容:
例如:隨著人工智能的不斷發(fā)展,機器學(xué)習(xí)這門技術(shù)也越來越重要,很多人都開啟了學(xué)習(xí)機器學(xué)習(xí),本文就介紹了機器學(xué)習(xí)的基礎(chǔ)內(nèi)容。
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
一、問題描述
今天在做項目時發(fā)現(xiàn)對于SpringBoot獲取資源文件這一塊知識比較模糊,查詢資料后記錄以備后需。
開始想的是獲取到資源文件絕對路徑,然后通過IO流的方式讀取對應(yīng)位置文件內(nèi)容,但是在打包運行時報錯找不到對應(yīng)位置的文件資源。
二、問題解決
開發(fā)環(huán)境可以通過下述方式來讀取文件test.txt:
1. 傳統(tǒng)Java方式:
File file = new File("src/main/resources/static/assets/test.txt"); InputStream inputStream = new InputStream(file);
這種方式開發(fā)環(huán)境可用,打成jar包后報錯。
2. ResourceUtils工具類:
File file = ResourceUtils.getFile("classpath:static/assets/test.txt"); InputStream inputStream = new InputStream(file);
這種方式開發(fā)環(huán)境可用,打成jar包后報錯,因為jar包中的文件結(jié)構(gòu)不會從src開始,百度查詢后jar包中的資源必須以流的方式來讀取。
3. ClassPathResource類:
ClassPathResource classpathResource = new ClassPathResource("static/assets/test.txt"); InputStream inputStream = classpathResource.getInputStream();
這種方法 開發(fā)環(huán)境和jar包都可以使用。
三、問題總結(jié)
1. 線上內(nèi)嵌的工程,我們只會放一個jar文件上去,我理解是jar里面的路徑是獲取不到的,jar是封閉性東西吧,不像文件夾,總不能c:/home/xx.jar/file.txt。只能通過流的方式來讀取。
2. jar里面文件讀取方式:
ClassPathResource classPathResource = new ClassPathResource(“test.txt”);
獲取文件流:
classPathResource .getInputStream();
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解mybatis中association和collection的column傳入多個參數(shù)問題
這篇文章主要介紹了詳解mybatis中association和collection的column傳入多個參數(shù)問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10利用Spring boot如何創(chuàng)建簡單的web交互應(yīng)用
這篇文章主要介紹了利用Spring boot如何創(chuàng)建簡單的web交互應(yīng)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-04-04Java之SpringBoot集成ActiveMQ消息中間件案例講解
這篇文章主要介紹了Java之SpringBoot集成ActiveMQ消息中間件案例講解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07