在開發中讀取專案中的配置或者靜態檔案是家常便飯的事情,我相信很多同學都從網上找下面的例子來進行檔案載入讀取操作。
利用classloader
獲取classpath
路徑:
classloader loader = thread.currentthread().getcontextclassloader();
string classpath = loader.getresource("").getpath()
或者利用class
物件來獲取絕對路徑或者classpath
路徑:
string absolutepath = this.getclass().getresource("").getpath();
string classpath = this.getclass().getresource("/").getpath();
然後在拼接檔案路徑讀取檔案。為什麼我這麼清楚?因為我也這麼幹過。但是現在我已經不這麼幹了,因為我發現了 spring 框架提供了更加好用的載入讀取檔案的方式。
對應讀取方法為:
classpathresource resource = new classpathresource(keypath);
inputstream is = resource.getinputstream();
然後你就能從流中讀取配置檔案的內容了,非常簡單。
還有其它一些方法,例如判斷檔案是否存在、獲取檔案的file
物件等等,也非常有用。
說到獲取檔案物件的getfile()
方法,這裡是有乙個小坑的。當你利用這個方法去讀取 jar 包裡面類路徑的檔案的時候是行不通的。
經過**除錯,發現載入的位址是乙個 jar 檔案協議位址,它類似這種格式jar:file:/***/xx.jar!/***x
。
而getfile()
方法只支援jboss的vfs
協議頭和傳統檔案系統的file
協議頭。所以推薦使用getinputstream()
。
classpathresource
在讀取類路徑下的檔案配置、或者 excel 模板、靜態配置時非常有用,封裝了很多好用的 api,推薦大家在合適的場景下使用。
非spring管理的類獲取spring配置引數
您好,專案時當初遇到了乙個問題,就是用mybaties 獲取所有日誌的sql並記錄進入日誌系統時,需要讀取spring的yml配置引數。發現網上教的大部分方法都無效 value等 究其原因,發現,大部分方法都是基於spring管理的類獲取配置引數,其方法可行,而此處的mybaties 無法交給spr...
用properties檔案讀取資料庫的配置檔案
當properties檔案在src目錄下時!以下三種路徑都是正確的。經過實驗驗證都可以讀到配置檔案 classpath不需要大寫字母 class org.springframework.beans.factory.config.propertyplaceholderconfigurer classp...
用spring來實現rmi十分的方便
rmi,為遠端方法呼叫,我們要用spring來實現呼叫 步驟1 編寫遠端介面和遠端介面的實現類 介面 package com.rmi public inte ce isomeservice 實現類 package com.rmi public class someservice implements...