java获取配置文件路径-(干货)java类中加载配置文件路径的问题整理
摘要:最近写突然遇到配置文件加载的问题,正好有机会把关于路径的问题整理一下。普通类中加载配置文件路径以的方式来获取配置文件路径这样就得到了一个文件的路径,继而我们可以把它转化成流。
最近写mybatis 突然遇到配置文件加载的问题, 正好有机会把关于java路径的问题整理一下。在下面的情况中,可以获得文件的路径, 也可以吧文件转成流以便使用。
servlet 加载配置文件路径
在servlet中有一个被称之为servlet上下文的东西, 这个东西很有意思,简单的讲这就是一个web路径的对象。例如localhost:8080/demo/index.jsp,以/demo为根路径的servlet上下文路径被发送给web应用程序java获取配置文件路径,在这里servlet上下文路径就是说这个根路径java获取配置文件路径,所有jsp和servlet应用都可以获得并使用这个路径, 同时,这个路径也是最常用和最应该使用的一个路径。既然这么好用就必然有获得它的一个很好的办法,
String path = this.getServletContext().getRealPath("xxx.file");
通过下面这样, 你就成功的给文件读入了文件流。
InputStream inputStream = new FileInputStream(path);
这里的getServletContext()就是获取servlet的上下文, 而getRealPath("xxx.file");则 是为了获取文件的真实路径。通过这样也就解决了Title中得获取配置文件的问题, 然而你说了,我不是在servlet中用的, 我是在POJO类中使用的, 你这个servlet很特殊,我总不能每次去建一个servlet来加载配置文件吧, 那好, 我们就进入下一个话题。
普通java类中加载配置文件路径
以classloader的方式来获取配置文件路径
String path =ClassName.class.getClassLoader().getResource("xxx.file").getPath();
这样就得到了一个文件的路径,继而我们可以把它转化成流。
InputStream inputStream = new FileInputStream(path);
是不是很简单呢。
用Class类加载资源文件
InputStream inputStream = ClassName.class.getResourceAsStream("/error.xml");
绝对定位,“/”开头,此时即以classpath为根目录
相对定位,不加“/”,则以调用getResourceAsStream类的包路径作为根目录(即该类所在包下获取资源)
q前面两种路径不过是冰山一角, 不过还是可以对学习起到一定的作用, java中得获取获取资源路径的范式数不胜数, 比如应用到框架时, 可以通过Resource类, 通过配置文件加载配置文件:classpath等等。但上面的两种方式却是java中最基本的两种方式。