JAVA——获取classpath文件路径空格转变成了转义字符(%20)的问题解决方案

Java 专栏收录该内容
286 篇文章 3 订阅

基本概念

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

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页

打赏作者

Starzkg

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值