Java檔案讀取 jar包內檔案讀取

2021-07-24 16:11:04 字數 2605 閱讀 6944

最近遇到一些jar包內外配置檔案讀取的問題。索性自己測試總結一下,與大家分享。

主要是關於classloader.getresource和class.getresource方法路徑區別的問題。

1. 絕對路徑檔案讀取,最簡單,最直接的方式

/**

* 從絕對路徑讀取檔案,最基本的檔案讀取方式

* * @author lihzh

* @data 2012-4-11 下午9:33:44

*/@test

public

void

testgetfilefromabsolutepath

()/**

* 對資料夾型別檔案的斷言

* * @param dirfile

* @author lihzh

* @data 2012-4-11 下午9:49:14

*/private

void

assertdirfile

(file

dirfile

)

2. 相對於執行編譯命令路徑的方式讀取

/**

* 從相對路徑讀取檔案,相對於編譯路徑,在eclipse中即為工程所在根目錄。 本質還是絕對路徑讀取。

* * @author lihzh

* @data 2012-4-11 下午9:51:10

*/@test

public

void

testgetfilefromrelativepath

()

3. 用uri構造本地檔案讀取

/**

* 構造uri/url格式的檔案路徑,讀取本地檔案

* * @author lihzh

* @throws urisyntaxexception

* @throws malformedurlexception

* @data 2012-4-11 下午10:25:00

*/@test

public

void

testgetfilefromuripath

()throws

urisyntaxexception

,malformedurlexception

特別說明:用uri/url的方式構造路徑是個人比較推薦的,可以解決一些路徑讀取的問題。例如:spring會對uri/url格式的路徑進行專有處理可以準確定位的位置,而直接使用絕對路徑,在用classpath和filesystem兩種不同的初始化方式下,可能會出現錯誤。

4. 利用classloader讀取jar包內部檔案

/**

* 從依賴的jar包中讀取檔案, jar包內的檔案是無法用file讀取的,只能用stream的方式讀取。

* * @author lihzh

* @throws urisyntaxexception

* @throws ioexception

* @data 2012-4-11 下午11:07:58

*/@test

public

void

testgetfilefromjarinclasspath

()throws

urisyntaxexception

,ioexception

5. 讀取jar內某路徑下的所有檔案

/**

* 從classpath中的jar包讀取某資料夾下的所有檔案

* * @author lihzh

* @throws ioexception

* @data 2012-4-13 下午10:22:24

*/@test

public

void

testgetfilesfromjarinclasspathwithdirpath

()throws

ioexception

}assert

.asserttrue

(props

.containskey

("test.key"

));assert

.assertequals

("thisisvalue"

,props

.getproperty

("test.key"

));assert

.asserttrue

(props

.containskey

("test.key.two"

));assert

.assertequals

("thisisanothervalue"

,props

.getproperty

("test.key.two"

));}

對於不在classpath下的jar包的讀取,當作乙個本地檔案用jarfile讀取即可。路徑可使用絕對路徑。或者用上面的url.getconnection也可以處理。這裡不再實現。 希望對你有所幫助。

jar包內檔案替換

jar 引數 引數 說明 c 建立乙個jar包 t 顯示jar中的內容列表 x 解壓jar包 u 新增檔案到jar包中 f 指定jar包的檔名 v 輸出詳細報告 m 指定manifest.mf檔案 0 生成jar包時不壓縮內容 m 不生成清單檔案manifest.mf i 為指定的jar檔案建立索引...

從Jar檔案裡面讀取檔案

我們知道,當jar放入classpath中時,可以通過getresourceasstream來取到其包含的普通檔案,比如a包下有個b.txt檔案,呼叫類叫someclass,於是可以如下取到 someclass.getclass getresourceasstream a b.txt 但是有時候這個...

讀取jar包內外的配置檔案

最近將 打包成jar包,關於如何處理讀取配置檔案的問題特此記錄一下。out.properties a.jar com a.class in.properties 如上所示,out.properties是於a.jar包在同一檔案目錄下 in.properties是在a.jar包內部的。關於a.clas...