java程序中classpath到底可不可以用

一.在springMVC中classpath经常可以看到,而且配置文件只要在源代码目录下,我们用calsspaht:配置文件名 都可以找到,可以说是非常方便。在java 程序中如何使用calsspath这种定位方式快速找到配置文件呢?

首先我们来回顾一下,java 的路径有哪几种
1.基于uri的绝对路径
2.基于磁盘的绝对路径
3.基于项目的相对路径
4.基于classPath的相对路径

二.而我们这里就是用的基于calssPath的相对路径,在使用classpath的相对路径的前提条件是吧配置文件放在源代码目录下,直接放在项目目录下是访问不到的(如果真的放在项目目录是推荐使用基于项目的相对路径,后面会提到),接下来在使用时,不像springmvc 那种要写classpath:配置文件名(写了会报错),而是直接使用配置文件名,配置文件相对于类文件又分以下四种情况:

1: 要加载的文件和.class文件在同一目录下,例如:com.x.y 下有类me.class ,同时有资源文件myfile.xml

那么,应该有如下代码:

me.class.getResourceAsStream("myfile.xml");

2:在me.class目录的子目录下,例如:com.x.y 下有类me.class ,同时在 com.x.y.file 目录下有资源文件myfile.xml

那么,应该有如下代码:

me.class.getResourceAsStream("file/myfile.xml");

3:不在me.class目录下,也不在子目录下,例如:com.x.y 下有类me.class ,同时在 com.x.file 目录下有资源文件myfile.xml

那么,应该有如下代码:

me.class.getResourceAsStream("/com/x/file/myfile.xml");
4.新建config源代码目录,和其他类文件不在一个文件夹下面
那么,应该有如下代码:
me.class.getResourceAsStream("/myfile.xml"); //注意前面有个/ 没有这个就是第一种情况了

三.介绍完classpath再来看一看基于项目 的相对路径

image1.png

这种情况下可以用:


 ins=new BufferedInputStream(new FileInputStream("config/name.properties"));

注意config前面没有/ ,因为是相对项目目录,加上就不是相对了会报错的,为了加深印象下面我在举一个例子:

image2.png

这种情况下可以用:


 ins=new BufferedInputStream(new FileInputStream("name.properties"));

同样要注意的是前面没有/ ,因为是相对项目目录,加上就不是相对了会报错的

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容