博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
war 配置文件路径
阅读量:6914 次
发布时间:2019-06-27

本文共 1661 字,大约阅读时间需要 5 分钟。

下面展示一段代码

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统一资源定位符,是对资源的管理,如获取资源文件流等

 

http://blog.csdn.net/u013409283/article/details/51480948

转载于:https://www.cnblogs.com/nuoyinsomnus/p/7885733.html

你可能感兴趣的文章
美国两大有线电视运营商达成无线服务合作 Verizon的大麻烦来了?
查看>>
Qt之QNetworkInterface
查看>>
Sentry 8.17.0 发布,Python 实时日志平台
查看>>
深圳卓炎科技的企业网站建设实战经验分享
查看>>
通过阿里云ECS从零开始构建网站
查看>>
《开源思索集》一开放源码是开源软件吗? - 简书
查看>>
Ubuntu Touch将支持用户数据加密:目前暂无时间表
查看>>
《金蝶ERP—K/3标准财务模拟实训(11.X版)》——导读
查看>>
开发者必备:基于 Linux 生态的十大AI开源框架盘
查看>>
《基于ArcGIS的Python编程秘笈(第2版)》——2.10 更新图层的符号系统
查看>>
SAP的ABAP屏幕程序如何使用Table Control进行数据交互
查看>>
Visual Studio 将集成 Cordova 支持跨平台开发
查看>>
这些方法助你优化 Android 启动速度
查看>>
《简明电路分析》——2.4节单口网络
查看>>
《动手玩转Arduino》——10.4 作品36:做一个三区域触摸开关
查看>>
《位置大数据隐私管理》—— 导读
查看>>
如何在 Ubuntu 以及 Debian 中安装 DHCP 服务器
查看>>
《图数据库》——2.1 关系型数据库缺少联系
查看>>
16万Facebook数据告诉你,单身狗更爱养猫
查看>>
《JUnit实战(第2版)》—— 1.6 使用JUnit测试
查看>>