1、背景
在做开发时,经常遇到这样的情形:
IDE、cmd、web容器,对于一个项目的主目录路径的获取方式总是不一样,而且跨os(如windows和linux)时更是如此,这样太影像编码了,因为总不能一个一个if else吧 ~囧~。
那么有没有办法解决呢?
2、解决方案:看需求!
2.1、如果你是想拿到路径,那么 => 没有
(除非仅限制在linux或mac上),因为windows的会在最前面带个/,变成 /D://XXX ,
2.2、如果你是想获取对应的资源(如InputStream形式),那么是有的。
就是使用public InputStream Class.getResourcesAsStream(String path)接口,直接以InputStream的形式读出来。这个跨os、跨各种环境,通用的。
spring内部读取配置文件就是这么用的,可参见XmlBeanDefinitionReader#loadBeanDefinitions(EncodedResource),
通过PathMatchingResourcePatternResolver#getResources(String)打断点进去。