最近写mybatis 突然遇到配置文件加载的问题, 正好有机会把关于java路径的问题整理一下。在下面的情况中,可以获得文件的路径, 也可以吧文件转成流以便使用。
servlet 加载配置文件路径
- 在servlet中有一个被称之为servlet上下文的东西, 这个东西很有意思,简单的讲这就是一个web路径的对象。例如localhost:8080/demo/index.jsp,以/demo为根路径的servlet上下文路径被发送给web应用程序,在这里servlet上下文路径就是说这个根路径,所有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中最基本的两种方式。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。