美文网首页
java程序中classpath到底可不可以用

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

作者: 持戒行善 | 来源:发表于2019-03-29 21:48 被阅读0次
一.在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"));

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

相关文章

网友评论

      本文标题:java程序中classpath到底可不可以用

      本文链接:https://www.haomeiwen.com/subject/rbgrbqtx.html