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

在java中獲取文件路徑的時候,有時候會獲取到空格,但是在中文編碼環境下,空格會變成“%20”從而使得路徑錯誤,解決辦法如下:
1.String path=Parameter.class.getResource("").getPath();//得到路徑   
2.//String path=Parameter.class.getResource("").toString();//這個不行,無法處理裏面的空格。   
3.//System.out.println(path);   
4.path=URLDecoder.decode(path,"utf-8");//關鍵啊 ! 


應用部署時,發生文件讀取錯誤。發現是部署路徑中含有空格的文件夾名。
然後把應用服務器位置遷移了。

從網上找到如下方案:

1, TestURL().class.getResource("").getPath()或TestURL().class.getResource("").getFile()獲得的路徑,不能被FileReader()和FileWriter()直接應用。
原因是URL對空格,特殊字符(%,#,[]等)和中文進行了編碼處理。
例如:空格變爲%20。
有解決方法(1),使用repaceAll("%20",' ')替換後,只能解決空格問題。但是路徑中包含%和中文就不行了。
有解決方法(2),使用URLDecoder.decode(str,"UTF-8")解碼,但是隻能解決一部分,若路徑中含有+,也是不能解決的,原因是URL並不是完全用URLEncoder.encode(str,"UTF-8")編碼的,+號被解碼後,卻變成了空格。
方法(3),可以解決所有的問題,用TestURL().class.getResource("").toURI().getPath(),但是需要處理URISyntaxException異常,比較麻煩點。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章