JAVA——获取classpath文件路径空格转变成了转义字符(%20)的问题解决方案
基本概念
URL(Uniform Resource Locator,統(tǒng)一資源定位符):WWW的統(tǒng)一資源定位標(biāo)志,即網(wǎng)絡(luò)地址。
URI((Uniform Resource Identifier,統(tǒng)一資源標(biāo)志符):表示的是web上每一種可用的資源,如 HTML文檔、圖像、視頻片段、程序等都由一個(gè)URI進(jìn)行定位的。
URL與URI區(qū)別:?https://blog.csdn.net/qq_32595453/article/details/80563142
問(wèn)題描述
String path = getClass().getResource("/").getPath();或
String path = getClass().getClassLoader.getResource("").getPath(); ?如果當(dāng)前路徑中包含了空格,則返回的路徑字符串空格則被轉(zhuǎn)義為(%20)?
問(wèn)題分析
URL對(duì)空格,特殊字符(%,#,[]等)和中文進(jìn)行了編碼處理。?
在中文編碼環(huán)境下,空格會(huì)變成“%20”從而使得路徑錯(cuò)誤.
解決方案
方法一
使用repaceAll("%20",' ')替換
針對(duì)性解決方案,不通用所有情況,例如:路徑中包含%和中文。
方法二
String path = getClass().getResource("/").toURI().getPath();或
String path = getClass().getClassLoader.getResource("").toURI().getPath();?需要處理URISyntaxException異常?
方法三
String path = Parameter.class.getResource("").getPath();//得到路徑 path = URLDecoder.decode(path,"utf-8");//關(guān)鍵啊 !只能解決一部分,若路徑中含有+,也是不能解決的
原因:URL并不是完全用URLEncoder.encode(str,"UTF-8")編碼的,+號(hào)被解碼后,卻變成了空格。?
參考文章
https://www.cnblogs.com/runerering/p/6042828.html
https://www.cnblogs.com/vincentDr/p/4526856.html
https://blog.csdn.net/hikvision_java_gyh/article/details/44655447
總結(jié)
以上是生活随笔為你收集整理的JAVA——获取classpath文件路径空格转变成了转义字符(%20)的问题解决方案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Spring Boot——HTTP访问重
- 下一篇: 产品原型设计工具