淺談web項(xiàng)目讀取classpath路徑下面的文件
本文主要研究的是web項(xiàng)目下讀取classpath路徑下的文件的問(wèn)題,具體如下。
首先分兩大類按web容器分類
一種是普通的web項(xiàng)目,像用Tomcat容器,特點(diǎn)是壓縮包隨著容器的啟動(dòng)會(huì)解壓縮成一個(gè)文件夾,項(xiàng)目訪問(wèn)的時(shí)候,實(shí)際是去訪問(wèn)文件夾,而不是jar或者war包。
這種的無(wú)論你是用獲取路徑的方法this.getClass().getResource("/")+fileName
獲取流的方法this.getClass().getResourceAsStream(failName);
import org.springframework.util.ResourceUtils;
File file= ResourceUtils.getFile("classpath:test.txt");
或者
ClassPathResource classPathResource = new ClassPathResource("test.txt");
獲取文件:classPathResource .getFile();
獲取文件流:classPathResource .getInputStream();
第二種是內(nèi)嵌web容器,其特點(diǎn)是只有一個(gè)jar文件,在容器啟動(dòng)后不會(huì)解壓縮,項(xiàng)目實(shí)際訪問(wèn)時(shí)jar包或者war包
這種最容易遇坑,最大的坑就是,用第一種方式讀取,在eclipse,本地調(diào)試,完美運(yùn)行,到linux環(huán)境下,就不行.
首先用獲取路徑的方法this.getClass().getResource("/")+fileName,獲取流的方法this.getClass().getResourceAsStream(failName);
在本地運(yùn)行時(shí),絕壁能找到,你打印出來(lái)路徑,沒(méi)錯(cuò),是咱們eclipse的工作目錄,項(xiàng)目目錄,但是在target目錄下。
現(xiàn)在給你分析為什么去到線上,就GG了,很簡(jiǎn)單,線上內(nèi)嵌的工程,我們只會(huì)放一個(gè)jar文件上去,我理解是jar里面的路徑是獲取不到的,jar是封閉性東西吧,不像文件夾,總不能c:/home/xx.jar/file.txt
讀取jar里面的文件,我們只能用流去讀取,不能用file,文件肯定要牽扯路徑,jar那個(gè)路徑剛剛我已經(jīng)拼出來(lái)了
jar里面文件讀取方式:
ClassPathResource classPathResource = new ClassPathResource("test.txt");
獲取文件流:classPathResource .getInputStream();
總結(jié)
以上就是本文關(guān)于淺談web項(xiàng)目讀取classpath路徑下面的文件的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
相關(guān)文章
SpringBoot整合BCrypt實(shí)現(xiàn)密碼加密
這篇文章主要為大家詳細(xì)介紹了SpringBoot整合BCrypt進(jìn)行密碼加密,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
IDEA加載項(xiàng)目沒(méi)有src目錄的問(wèn)題及解決
這篇文章主要介紹了IDEA加載項(xiàng)目沒(méi)有src目錄的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
java8 Stream API之reduce使用說(shuō)明
這篇文章主要介紹了java8 Stream API之reduce使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
淺談Spring中幾個(gè)PostProcessor的區(qū)別與聯(lián)系
這篇文章主要介紹了淺談Spring中幾個(gè)PostProcessor的區(qū)別與聯(lián)系,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
springboot集成gzip和zip數(shù)據(jù)壓縮傳輸(適用大數(shù)據(jù)信息傳輸)
?在大數(shù)據(jù)量的傳輸中,壓縮數(shù)據(jù)后進(jìn)行傳輸可以一定程度的解決速度問(wèn)題,本文主要介紹了springboot集成gzip和zip數(shù)據(jù)壓縮傳輸,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
java通過(guò)復(fù)選框控件數(shù)組實(shí)現(xiàn)添加多個(gè)復(fù)選框控件示例分享
編寫(xiě)程序,通過(guò)復(fù)選框控件數(shù)組事先選擇用戶愛(ài)好信息的復(fù)選框,在該程序中,要求界面中的復(fù)選框數(shù)量可以根據(jù)指定復(fù)選框名稱的字符串?dāng)?shù)組的長(zhǎng)度來(lái)自動(dòng)調(diào)節(jié)2014-02-02
Java實(shí)現(xiàn)郵件發(fā)送QQ郵箱帶附件
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)郵件發(fā)送QQ郵箱帶附件功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03
Java實(shí)現(xiàn)向數(shù)組里添加元素
這篇文章主要介紹了Java實(shí)現(xiàn)向數(shù)組里添加元素方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11

