web專案讀取classpath路徑下面的檔案

2022-03-17 20:02:45 字數 1208 閱讀 1953

首先分兩大類按web容器分類

一種是普通的web專案,像用tomcat容器,特點是壓縮包隨著容器的啟動會解壓縮成乙個資料夾,專案訪問的時候,實際是去訪問資料夾,而不是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();

第二種是內嵌web容器,其特點是只有乙個jar檔案,在容器啟動後不會解壓縮,專案實際訪問時jar包或者war包

這種最容易遇坑,最大的坑就是,用第一種方式讀取,在eclipse,本地除錯,完美執行,到linux環境下,就不行.

首先用獲取路徑的方法this.getclass().getresource("/")+filename,獲取流的方法this.getclass().getresourceasstream(failname);

在本地執行時,絕壁能找到,你列印出來路徑,沒錯,是咱們eclipse的工作目錄,專案目錄,但是在target目錄下。

現在給你分析為什麼去到線上,就gg了,很簡單,線上內嵌的工程,我們只會放乙個jar檔案上去,我理解是jar裡面的路徑是獲取不到的,jar是封閉性東西吧,不像資料夾,總不能c:/home/xx.jar/file.txt

讀取jar裡面的檔案,我們只能用流去讀取,不能用file,檔案肯定要牽扯路徑,jar那個路徑剛剛我已經拼出來了

jar裡面檔案讀取方式:

classpathresource classpathresource = new classpathresource("test.txt");

獲取檔案流:classpathresource .getinputstream();

web專案讀取classpath路徑下面的檔案

首先分兩大類按web容器分類 一種是普通的web專案,像用tomcat容器,特點是壓縮包隨著容器的啟動會解壓縮成乙個資料夾,專案訪問的時候,實際是去訪問資料夾,而不是jar或者war包。這種的無論你是用獲取路徑的方法this.getclass getresource filename 獲取流的方法t...

web專案在WebLogic下讀取配置檔案的錯誤

在web專案中讀取classes下的配置檔案,使用的是getclassloader getresourceasstream的方法如下 string syncfiledir sync string rulefile syncrule.xml ruleloader.class.getclassloade...

asp 讀取 web 檔案

response.write 沒有找到網頁 轉換編碼 function bytestobstr body,cset dim objstream set objstream server.createobject adodb.stream objstream.type 1 objstream.mode...