java編程的文件路徑問題

 前言:今天準備寫一個數據庫連接池,想着把一些固定的參數,放到外部文件裏面,而不用直接相這樣,Class.forName("com.mysql.jdbc.Driver");寫死在代碼裏面。於是新建了一個包config,在包裏面新建一個dbpool.properties的文件,用來存放一些固定的字符串,然後在DBPool.java中新建一個方法,用於讀取properties文件的內容。於是得通過文件路徑獲取輸入流,再通過Properties類的load();方法得到文件內容,文件就來了。

 

問題:文件的路徑改怎麼寫呢?以前寫輸入輸出流代碼的時候,直接就進入系統文件管理器裏面找到文件路徑就ok了,就想這樣,D:\java_src\myeclipse\iShop\src\com\jake\config\dbpool.properties,直接粘到輸入流就行了,這樣,當然在你的電腦裏運行自己寫的程序,當然沒有問題,可是你的項目如果一旦佈置到其他的電腦上,也許路徑就不是這樣了,甚至佈置到其他的系統上,這種路徑更是不可能存在了,如何獲取文件路徑呢?

 

解決:看到下面的例子就就會明白了,以後這個文件的路徑問題就好解決了。

 

首先這是我的項目結構圖,文件在config包裏面,而需要在DBPool類裏面用上文件裏的數據。

 

目錄結構

 

如何用?

 

然後編寫一個方法,叫ini(),把文件裏的數據讀出來:

 

  1. public void iniPool(){ 
  2.    InputStream in =  DBPool.class.getResource("/com/jake/config/dbPool.properties"); 
  3.    Properties pro = new Properties(); 
  4.    pro.load(in); 
  5.    String class_name = pro.getProperty("class_name"); 

 

這樣就可以把文件裏的鍵值對取出賦值給變量,後面的文件路徑問什麼這麼寫,看下面的圖片,相信你就會明白爲什麼了。

 

這是我寫的測試方法:

其中DBPool.class打印出來是類的包路徑,自動調用toString方法打印出來;

getResource(),是爲了找到資源文件,如果不存在就返回null;而getResource("")指的是除了類名的前面的路徑,而加上"/",則指的是類包的根目錄,不管什麼類都是這樣的,只可能是classes的路徑,比如Class類:Class.class.getResource("/")得到的還是項目的classes的目錄路徑,這樣就確保將來如果把項目移到其他的系統上時,路徑會更隨自己變動,而不是寫死的固定路徑。

 

結果

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章