1. 程式人生 > >類路徑讀取(載入)配置檔案

類路徑讀取(載入)配置檔案

載入資原始檔時路徑問題

案例1:       

不管是java專案還是web專案,用類路徑讀取配置檔案通用性大,移植性好。如下:


  1. InputStream in =JdbcUtil.class.getResourceAsStream("/db.properties");
  2. properties.load(in);

案例2:


如果要是獲取java專案中a.zip資源的路徑字串,也可通過方法:
  1. String attachmentFile =this.getClass().getResource("../../../a.zip").toURI().getPath();

案例3:


如果要是獲取java專案中hh.png資源的路徑字串,也可通過方法:
  1. SendMail.
    class.getResource("hh.png").toURI().getPath();//類路徑獲取資原始檔路徑

方式1:點 . 代表java的命令執行的目錄(不推薦)

在java專案下, 點 . java命令的執行目錄從專案的根目錄MyEclipse工作空間/bin 目錄開始
 在web專案下,點 .java命令的執行目錄從tomact/bin 目錄開始
            java專案換成web專案時,不具備通用性,所以不能用點.

方式2:使用類路徑讀取配置檔案

/  斜槓表示classpath的根目錄
在java專案下,classpath的根目錄從bin目錄開始

 在web專案下,classpath的根目錄從WEB-INF/classes目錄開始
正好,方式2,在java專案中和web專案中都能一致的讀取到資原始檔。具有通用性。但是隻能是讀,不能改,因為是在web專案中tomcat/專案/WEB-INF/classes,更改了內容,再發佈會發生更新。 例如:
  1. InputStream in =JdbcUtil.class.getResourceAsStream("/db.properties");
  2. properties.load(in);

java中獲取路徑中的空格處理(%20)問題

       在java中獲取檔案路徑的時候,有時候會獲取到空格,但是在中文編碼環境下,空格會變成“%20”從而使得路徑錯誤。    

原因:

URL對空格,特殊字元(%,#,[]等)和中文進行了編碼處理。例如:空格變為%20。 

解決辦法如下:

解決方法1:使用repaceAll("%20", " ")替換後,只能解決空格問題。但是路徑中包含%和中文就不行了。  解決方法2:使用URLDecoder.decode(str,"UTF-8")解碼,但是隻能解決一部分,若路徑中含有+,也是不能解決的,原因是URL並不是完全用URLEncoder.encode(str,"UTF-8")編碼的,+號被解碼後,卻變成了空格。      解決方法3:可以解決所有的問題,用TestURL().class.getResource("").toURI().getPath()
  1. // String filePath = SendMail.class.getResource("hh.png").getPath();//類路徑獲取資原始檔路徑,但是路徑中有空格或者中文等特殊字元會亂碼,導致路徑不對
  2. /**
  3. * 解決方式1:
  4. */
  5. // filePath = filePath.replace("%20", " ");//路徑中的空格為20%,所以也可以用空格進行字串替換,但是對中文亂碼又無法解決
  6. /**
  7. * 解決方式2:
  8. */
  9. // String filePath = SendMail.class.getResource("hh.png").getPath();
  10. // filePath = URLDecoder.decode(filePath, "gbk");//只能解決一部分,若路徑中含有+,也是不能解決的,原因是URL並不是完全用URLEncoder.encode(str,"UTF-8")編碼的,+號被解碼後,卻變成了空格。
  11. /**
  12. * 解決方式3:(推薦)
  13. */
  14. String filePath =SendMail.class.getResource("hh.png").toURI().getPath();
  15. System.out.println(".........................."+ filePath);