一.在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ì)路徑

這種情況下可以用:
ins=new BufferedInputStream(new FileInputStream("config/name.properties"));
注意config前面沒(méi)有/ ,因?yàn)槭窍鄬?duì)項(xiàng)目目錄,加上就不是相對(duì)了會(huì)報(bào)錯(cuò)的,為了加深印象下面我在舉一個(gè)例子:

這種情況下可以用:
ins=new BufferedInputStream(new FileInputStream("name.properties"));
同樣要注意的是前面沒(méi)有/ ,因?yàn)槭窍鄬?duì)項(xiàng)目目錄,加上就不是相對(duì)了會(huì)報(bào)錯(cuò)的