`
free_chenwei
  • 浏览: 24716 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

为什么获取路径空格变成了转义字符呢

    博客分类:
  • JAVA
 
阅读更多

 

下面展示一段代码
String path = getClass().getResource("/").getPath();

String path = getClass().getClassLoader.getResource("").getPath(); 
如果当前路径中包含了空格,则返回的路径字符串空格则被转义为(%20),如何解决这个问题呢?

String path = getClass().getResource("/").toURI().getPath();

String path = getClass().getClassLoader.getResource("").toURI().getPath(); 

也可以   java.net.URLDecoder.decode(path,"UTF-8 ");其他编码也是可以的哈。


到这个地方其实还有两个疑问1.getClass().getResource("/")与getClass().getClassLoader.getResource("/")有什么区别;
2.toURI()是什么;

 

Class().getResource与ClassLoader.getResource

Class().getResource,如果以 “/”开始则查找的路径是以classpath指向的绝对路径,包括jar文件路径,
如果不是以“/”开始,则查找的路径是从当前包路径开始查找,故jar文件查找不到


ClassLoader.getResource,查找的时候不能以“/”开头,查找的路径必须是绝对路径,查找范围包括jar文件


例子:可以在任意包路径下运行,然后根据结果得出以上结论

System.out.println(getClass().getResource(""));
System.out.println(getClass().getResource("/"));
System.out.println(getClass().getClassLoader().getResource(""));
System.out.println(getClass().getClassLoader().getResource("/"));

PS:查看一下Class.getResource源代码,会发现最终都是以ClassLoader.getResource获取资源位置

WEB应用中也可以这样用:
URL url = (URL) ServletActionContext.getServletContext().getResource("/WEB-INF/classes/config/chen wei/jdbc.properties");
// URL url = (URL)req.getSession().getServletContext().getResource("/WEB-INF/webinffile.txt");


URI与URL

ClassLoader.getResource("/").toURI()或Class().getResource("/").toURI()

getResource方法返回的是一个URL对象,toURI()是将RUL对象转换为URI对象.

查看了 URL和URI 对于getPath()方法的源代码,前者是没有对转义字符的解码的过程,而后则是有一个解码的过程
java.net.URLDecoder.decode;


URI与URL区别,我只是简单说说我简单的理解的

URI统一资源标识符,是针对整个资源的一个属性的管理对象,包括了URL

URL统一资源定位符,是对资源的管理,如获取资源文件流等

详细的自己看JDK API,估计看完了你脑壳也昏了

详细的是就自己看吧你看看额,我觉得还是不错的哟,肯定很好耍,

0
1
分享到:
评论

相关推荐

    URL的参数中有加号传值变为空格的问题(URL特殊字符)

    转义字符的原因: 如果你的表单使用get方法提交,并且提交的参数中有“&”等特殊符的话,如果不做处理,在service端就会将&后面的作为另外一个参数来看待。例如 表单的action为list.jsf?act=Go&state=5 则提交时...

    100个直接可以拿来用的JavaScript实用功能代码片段(1-10)

    27、原生JavaScript获取当前路径 28、原生JavaScriptIP转成整型 29、原生JavaScript整型解析为IP地址 30、原生JavaScript实现checkbox全选与全不选 31、原生JavaScript判断是否移动设备 32、原生JavaScript判断是否...

    C#编程经验技巧宝典

    19 <br>0038 巧用“^=”运算符 19 <br>0039 巧用位移运算符 20 <br>0040 使用条件运算符 20 <br>0041 巧用分隔符 20 <br>0042 如何处理转义字符 21 <br>0043 “;”结束符问题 21 ...

    shell脚本与Makefile区别.docx

    echo 命令也经常用来输出结果,例如 echo –e 处理双引号中的转义字符,echo –n 换行。 最后,* 和 % 是两个不同的通配符,* 侧重于表示系统的通配符直接用在命令中,而 % 侧重表示 Makefile 的规则通配符,在 ...

    正则表达式经典实例.pdf

    5.14 对正则表达式元字符进行转义 第6章 数字 6.1 整数 6.2 十六进制数字 6.3 二进制数 6.4 删除前导 6.5 位于某个特定范围之内的整数 6.6 在某个特定范围之内的十六进制数 6.7 浮点数 6.8 含有千位分隔符的数 6.9 ...

    正则表达式经典实例

    5.14 对正则表达式元字符进行转义 第6章 数字 6.1 整数 6.2 十六进制数字 6.3 二进制数 6.4 删除前导 6.5 位于某个特定范围之内的整数 6.6 在某个特定范围之内的十六进制数 6.7 浮点数 6.8 含有千位分隔符...

    grub4dos-V0.4.6a-2017-02-04更新

    修正了 iso9600_Joliet 文件格式转义符显示问题。 2014-01-16(yaya) 1.当 FDD 模式的 u 盘(有 BPB,没有分区表)被 BIOS 分配驱动器号 0x80 时,映射为 0x00, 同时屏蔽驱动器号 0x80(避免通过 BIOS 读 u 盘,...

    day023-xml解析笔记和代码.rar

    名称字符之间不能有空格或者制表符; 例如<四川 省> 12.名称字符之间不能使用冒号;<xml:xx></xml: xx> 注意: 1.Xml中空格和换行都表示数据,严格区分大小写 1.4 XML约束:(了解) 1. ...

    精易模块[源码] V5.15

    2、修正“正则元字符转义”子程序,对应个别替换符错误的BUG,感谢易友【@墨雨千寻】反馈。 3、改善“进程_枚举”处理效率,由易友【@御风软件】提供方案。 4、新增“窗口_是否被遮挡”,判断一个窗口是否被置顶窗口...

    前端css+html+布局笔记

    实体也可以称为转义字符 实体的语法 &实体名; 常用的实体 空格   < < > > 版权符号 © 图片标签 使用图片标签可以向页面中引入一个外部图片 属性 src 指向一个...

    易语言程序免安装版下载

    “库文件名”以.lib或.obj为后缀的将被视为静态库,可使用绝对路径或相对路径(相对当前源代码所在目录),如依赖多个静态库请分别列出并以逗号分隔;“在库中的对应命令名”请务必准确填写静态库中公开导出的符号...

Global site tag (gtag.js) - Google Analytics