java程序中classpath到底可不可以用

一.在springMVC中classpath經(jīng)常可以看到,而且配置文件只要在源代碼目錄下,我們用calsspaht:配置文件名 都可以找到,可以說(shuō)是非常方便。在java 程序中如何使用calsspath這種定位方式快速找到配置文件呢?

首先我們來(lái)回顧一下,java 的路徑有哪幾種
1.基于uri的絕對(duì)路徑
2.基于磁盤的絕對(duì)路徑
3.基于項(xiàng)目的相對(duì)路徑
4.基于classPath的相對(duì)路徑

二.而我們這里就是用的基于calssPath的相對(duì)路徑,在使用classpath的相對(duì)路徑的前提條件是吧配置文件放在源代碼目錄下,直接放在項(xiàng)目目錄下是訪問(wèn)不到的(如果真的放在項(xiàng)目目錄是推薦使用基于項(xiàng)目的相對(duì)路徑,后面會(huì)提到),接下來(lái)在使用時(shí),不像springmvc 那種要寫(xiě)classpath:配置文件名(寫(xiě)了會(huì)報(bào)錯(cuò)),而是直接使用配置文件名,配置文件相對(duì)于類文件又分以下四種情況:

1: 要加載的文件和.class文件在同一目錄下,例如:com.x.y 下有類me.class ,同時(shí)有資源文件myfile.xml

那么,應(yīng)該有如下代碼:

me.class.getResourceAsStream("myfile.xml");

2:在me.class目錄的子目錄下,例如:com.x.y 下有類me.class ,同時(shí)在 com.x.y.file 目錄下有資源文件myfile.xml

那么,應(yīng)該有如下代碼:

me.class.getResourceAsStream("file/myfile.xml");

3:不在me.class目錄下,也不在子目錄下,例如:com.x.y 下有類me.class ,同時(shí)在 com.x.file 目錄下有資源文件myfile.xml

那么,應(yīng)該有如下代碼:

me.class.getResourceAsStream("/com/x/file/myfile.xml");
4.新建config源代碼目錄,和其他類文件不在一個(gè)文件夾下面
那么,應(yīng)該有如下代碼:
me.class.getResourceAsStream("/myfile.xml"); //注意前面有個(gè)/ 沒(méi)有這個(gè)就是第一種情況了

三.介紹完classpath再來(lái)看一看基于項(xiàng)目 的相對(duì)路徑

image1.png

這種情況下可以用:


 ins=new BufferedInputStream(new FileInputStream("config/name.properties"));

注意config前面沒(méi)有/ ,因?yàn)槭窍鄬?duì)項(xiàng)目目錄,加上就不是相對(duì)了會(huì)報(bào)錯(cuò)的,為了加深印象下面我在舉一個(gè)例子:

image2.png

這種情況下可以用:


 ins=new BufferedInputStream(new FileInputStream("name.properties"));

同樣要注意的是前面沒(méi)有/ ,因?yàn)槭窍鄬?duì)項(xiàng)目目錄,加上就不是相對(duì)了會(huì)報(bào)錯(cuò)的

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容