您好,登錄后才能下訂單哦!
本文主要研究的是web項(xiàng)目下讀取classpath路徑下的文件的問題,具體如下。
首先分兩大類按web容器分類
一種是普通的web項(xiàng)目,像用Tomcat容器,特點(diǎn)是壓縮包隨著容器的啟動會解壓縮成一個文件夾,項(xiàng)目訪問的時候,實(shí)際是去訪問文件夾,而不是jar或者war包。
這種的無論你是用獲取路徑的方法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)是只有一個jar文件,在容器啟動后不會解壓縮,項(xiàng)目實(shí)際訪問時jar包或者war包
這種最容易遇坑,最大的坑就是,用第一種方式讀取,在eclipse,本地調(diào)試,完美運(yùn)行,到linux環(huán)境下,就不行.
首先用獲取路徑的方法this.getClass().getResource("/")+fileName
,獲取流的方法this.getClass().getResourceAsStream(failName);
在本地運(yùn)行時,絕壁能找到,你打印出來路徑,沒錯,是咱們eclipse的工作目錄,項(xiàng)目目錄,但是在target目錄下。
現(xiàn)在給你分析為什么去到線上,就GG了,很簡單,線上內(nèi)嵌的工程,我們只會放一個jar文件上去,我理解是jar里面的路徑是獲取不到的,jar是封閉性東西吧,不像文件夾,總不能c:/home/xx.jar/file.txt
讀取jar里面的文件,我們只能用流去讀取,不能用file,文件肯定要牽扯路徑,jar那個路徑剛剛我已經(jīng)拼出來了
jar里面文件讀取方式:
ClassPathResource classPathResource = new ClassPathResource("test.txt");
獲取文件流:classPathResource .getInputStream();
總結(jié)
以上就是本文關(guān)于淺談web項(xiàng)目讀取classpath路徑下面的文件的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。