類路徑讀取(載入)配置檔案
阿新 • • 發佈:2019-01-02
載入資原始檔時路徑問題
案例1:
不管是java專案還是web專案,用類路徑讀取配置檔案通用性大,移植性好。如下:InputStream in =JdbcUtil.class.getResourceAsStream("/db.properties");
properties.load(in);
案例2:
如果要是獲取java專案中a.zip資源的路徑字串,也可通過方法:
String attachmentFile =this.getClass().getResource("../../../a.zip").toURI().getPath();
案例3:
如果要是獲取java專案中hh.png資源的路徑字串,也可通過方法:
SendMail.
方式1:點 . 代表java的命令執行的目錄(不推薦)
在java專案下, 點 . java命令的執行目錄從專案的根目錄MyEclipse工作空間/bin 目錄開始java專案換成web專案時,不具備通用性,所以不能用點.
在web專案下,點 .java命令的執行目錄從tomact/bin 目錄開始
方式2:使用類路徑讀取配置檔案
/ 斜槓表示classpath的根目錄在java專案下,classpath的根目錄從bin目錄開始正好,方式2,在java專案中和web專案中都能一致的讀取到資原始檔。具有通用性。但是隻能是讀,不能改,因為是在web專案中tomcat/專案/WEB-INF/classes,更改了內容,再發佈會發生更新。 例如:
在web專案下,classpath的根目錄從WEB-INF/classes目錄開始
InputStream in =JdbcUtil.class.getResourceAsStream("/db.properties");
properties.load(in);
java中獲取路徑中的空格處理(%20)問題
在java中獲取檔案路徑的時候,有時候會獲取到空格,但是在中文編碼環境下,空格會變成“%20”從而使得路徑錯誤。原因:
解決辦法如下:
解決方法1:使用repaceAll("%20", " ")替換後,只能解決空格問題。但是路徑中包含%和中文就不行了。 解決方法2:使用URLDecoder.decode(str,"UTF-8")解碼,但是隻能解決一部分,若路徑中含有+,也是不能解決的,原因是URL並不是完全用URLEncoder.encode(str,"UTF-8")編碼的,+號被解碼後,卻變成了空格。 解決方法3:可以解決所有的問題,用TestURL().class.getResource("").toURI().getPath()// String filePath = SendMail.class.getResource("hh.png").getPath();//類路徑獲取資原始檔路徑,但是路徑中有空格或者中文等特殊字元會亂碼,導致路徑不對
/**
* 解決方式1:
*/
// filePath = filePath.replace("%20", " ");//路徑中的空格為20%,所以也可以用空格進行字串替換,但是對中文亂碼又無法解決
/**
* 解決方式2:
*/
// String filePath = SendMail.class.getResource("hh.png").getPath();
// filePath = URLDecoder.decode(filePath, "gbk");//只能解決一部分,若路徑中含有+,也是不能解決的,原因是URL並不是完全用URLEncoder.encode(str,"UTF-8")編碼的,+號被解碼後,卻變成了空格。
/**
* 解決方式3:(推薦)
*/
String filePath =SendMail.class.getResource("hh.png").toURI().getPath();
System.out.println(".........................."+ filePath);