java获取classpath⽂件路径空格转变成了转义字符%20的问题
解决!
url编码处理这个问题很纠结,服务器的⽂件路径带有空格,空格被转化是%20了,悲剧就出现了,赶紧收藏了!
下⾯展⽰⼀段代码
String path = getClass().getResource("/").getPath();
或
String path = getClass().Resource("").getPath();
如果当前路径中包含了空格,则返回的路径字符串空格则被转义为(%20),如何解决这个问题呢?
String path = getClass().getResource("/").toURI().getPath();
或
String path = getClass().Resource("").toURI().getPath();
也可以 java.URLDecoder.decode(path,"UTF-8 ");其他编码也是可以的哈。
到这个地⽅其实还有两个疑问1.getClass().getResource("/")与getClass().Resource("/")有什么区别;
Class().getResource与Resource
Class().getResource,如果以 “/”开始则查的路径是以classpath指向的绝对路径,包括jar⽂件路径,
如果不是以“/”开始,则查的路径是从当前包路径开始查,故jar⽂件查不到
例⼦:可以在任意包路径下运⾏,然后根据结果得出以上结论
System.out.println(getClass().getResource(""));
System.out.println(getClass().getResource("/"));
System.out.println(getClass().getClassLoader().getResource(""));
System.out.println(getClass().getClassLoader().getResource("/"));
PS:查看⼀下Resource源代码,会发现最终都是以Resource获取资源位置
WEB应⽤中也可以这样⽤:
URL url = (URL) ServletContext().getResource("/WEB-INF/classes/config/chen
wei/jdbc.properties");
// URL url = (Session().getServletContext().getResource("/");
URI与URL
getResource⽅法返回的是⼀个URL对象,toURI()是将RUL对象转换为URI对象.
查看了 URL和URI 对于getPath()⽅法的源代码,前者是没有对转义字符的解码的过程,⽽后则是有⼀个解码的过程
java.URLDecoder.decode;
URI与URL区别,我只是简单说说我简单的理解的
URI统⼀资源标识符,是针对整个资源的⼀个属性的管理对象,包括了URL URL统⼀资源定位符,是对资源的管理,如获取资源⽂件流等
详细的⾃⼰看JDK API,估计看完了你脑壳也昏了
详细的是就⾃⼰看吧你看看额,我觉得还是不错的哟,肯定很好耍,
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论