SpringBoot如何讀取Resource下的文件
SpringBoot項目構建成jar運行,如何正確讀取resource里的文件
SpringBoot 項目在打包成jar 文件后運行在服務器上后是無法讀取到 jar 文件中的內容的
總結了一般有如下四種讀取文件的方式:
第一種
ClassPathResource classPathResource = new ClassPathResource("excleTemplate/test.xlsx");
InputStream inputStream = classPathResource.getInputStream();第二種
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("excleTemplate/test.xlsx");第三種
InputStream inputStream = this.getClass().getResourceAsStream("/excleTemplate/test.xlsx");第四種
File file = ResourceUtils.getFile("classpath:excleTemplate/test.xlsx");
InputStream inputStream = new FileInputStream(file);前三種方法在開發(fā)環(huán)境(IDE中)和生產環(huán)境(linux部署成jar包)都可以讀取到,第四種只有開發(fā)環(huán)境 時可以讀取到,生產環(huán)境讀取失敗。
推測主要原因是springboot內置tomcat,打包后是一個jar包,無法直接讀取jar包中的文件,讀取只能通過類加載器讀取。
前三種都可以讀取到其實殊途同歸,直接查看底層代碼都是通過類加載器讀取文件流,類加載器可以讀取jar包中的編譯后的class文件,當然也是可以讀取jar包中的excle模板了。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Spring整合Quartz Job以及Spring Task的實現(xiàn)方法
下面小編就為大家分享一篇Spring整合Quartz Job以及Spring Task的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12
詳解SpringBoot啟動項目后執(zhí)行方法的幾種方式
在項目開發(fā)中某些場景必須要用到啟動項目后立即執(zhí)行方式的功能,本文主要聊聊實現(xiàn)立即執(zhí)行的幾種方法,具有一定的參考價值,感興趣的可以了解一下2023-09-09
解析Spring RestTemplate必須搭配MultiValueMap的理由
本文給大家介紹Spring RestTemplate必須搭配MultiValueMap的理由,本文通過實例圖文相結合給大家介紹的非常詳細,需要的朋友參考下吧2021-11-11
IntelliJ IDEA2020.2.2創(chuàng)建Servlet方法及404問題
這篇文章主要介紹了IntelliJ IDEA2020.2.2創(chuàng)建Servlet方法及404問題,這里小編使用的2020.2.2企業(yè)破解版本,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09
Java與Scala創(chuàng)建List與Map的實現(xiàn)方式
這篇文章主要介紹了Java與Scala創(chuàng)建List與Map的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10
mybatis報錯元素內容必須由格式正確的字符數據或標記組成異常的解決辦法
今天小編就為大家分享一篇關于mybatis查詢出錯解決辦法,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12

