很多时候程序需要读取工程中的一些文件(如xml、properties等等),而文件的路径指定往往会困扰我们的开发工作,尤其在web程序的开发中路径问题尤为突出,下面就简单介绍一下java中相对路径的获得方法。
1. getRealPath():仅限使用在servlet中,可以动态获得文件的绝对路径,部署在服务器上的工程通常要查看部署后服务器中的路径。
this.getServletContext().getRealPath("WEB-INF/classes/com.demo/config.xml")
2. getResource/getResourceAsStream:
1.String path =”/xml/config.xml”;
2.String fullPath=this.getClass().getClassLoader().getResource(path).getPath();
或是:
Class.class.getResource("/file/config.xml").getPath()
在使用Class.getResource/Class.getResourceAsStream 时, 资源路径有两种方式, 一种以 / 开头,则这样的路径是指定绝对路径, 如果不以 / 开头, 则路径是相对与这个class所在的包的。
在使用ClassLoader.getResource/ClassLoader.getResourceAsStream时, 路径直接使用相对于classpath的绝对路径。
当路径中含有空格时,这种方式,有时会出问题,要把%20重新转为空格,进行替换处理,才能获得正确的路径。
String path =”/xml/config.xml”;
String fullPath=this.getClass().getClassLoader().getResource(path).getPath();
=====================================================================
YourClass.class.getClassLoader().getResourceAsStream("your.configuration.file");
通过ClassLoader获得Resource得到URL,直接用URL的openStream方法就可以打开了