JAVA——获取classpath文件路径空格转变成了转义字符(%20)的问题解决方案
基本概念
URL(Uniform Resource Locator,统一资源定位符):WWW的统一资源定位标志,即网络地址。
URI((Uniform Resource Identifier,统一资源标志符):表示的是web上每一种可用的资源,如 HTML文档、图像、视频片段、程序等都由一个URI进行定位的。
URL与URI区别: https://blog.csdn.net/qq_32595453/article/details/80563142
问题描述
String path = getClass().getResource("/").getPath();或
String path = getClass().getClassLoader.getResource("").getPath();如果当前路径中包含了空格,则返回的路径字符串空格则被转义为(%20)
问题分析
URL对空格,特殊字符(%,#,[]等)和中文进行了编码处理。
在中文编码环境下,空格会变成“%20”从而使得路径错误.
解决方案
方法一
使用repaceAll("%20",' ')替换
针对性解决方案,不通用所有情况,例如:路径中包含%和中文。
方法二
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");//关键啊 !只能解决一部分,若路径中含有+,也是不能解决的
原因:URL并不是完全用URLEncoder.encode(str,"UTF-8")编码的,+号被解码后,却变成了空格。
参考文章
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
总结
以上是生活随笔为你收集整理的JAVA——获取classpath文件路径空格转变成了转义字符(%20)的问题解决方案的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Spring Boot——HTTP访问重
- 下一篇: 产品原型设计工具