JAVA使用相对路径读取配置文件

 

JAVA使用相对路径读取配置文件[align=center][/align][size=medium][/size]
   在软件开发中常常遇到读取配置文件,以及文件定位问题。今天作个总结。
   (一)在java project中的配置文件读取
        java project项目的目录结构只有两个src和bin。src中存放的是源文件,bin中存放的是*.class的字节码文件。源文件进过编译就放进bin目录中,其中也包括没有编译的配置文件。咱们须要的是对bin中的配置文件进行读取,由于项目最终打包成*.jar的就是bin目录下的文件。采用相对路劲进行读取的时候,须要肯定此时相对的是哪个基路径。其实这个基路径就是java.io默认定位到的当前用户目录("user.dir")(即工程根目录)。相对于这个路径在定位咱们的配置文件。以下所示:
     File  file=new File("test/login.conf");
JVM就能够据"user.dir"与"test/login.conf" 获得完整的路径(即绝对路径)"D:\DecisionTree\test\login.conf",从而找到login.conf文件。
     一般咱们使用  “类名”.class.getClassLoader().getResource("login.conf").openStream()来加载classes目录下的配置文件。获得文件的输入流。
     “类名”.class.getClassLoader().getResource("")定位到的绝对路径是WEB-INF\classes目录下。getResource(String filepath)。参数filepath是classes目录下的相对路径。
  (二)在java web project中的配置文件读取           若是咱们把配置文件定义在了classpath路径下。也就是WEB-INF\classes路径下,那么就能够像读取java project中的配置文件那样读取了。           若是咱们把配置文件定义在了WEB-INF的直接目录下。而不是classes目录下,那么是classpath以外的路径了,经过上面的那种方式是读取不到了。这是在应用环境下,要用到ServletContext,    ServletActionContext.getServletContext().getResource("/")能够定位到当前web应用目录 如:jndi:/server/TEST/  TEST为当前的web应用系统名。getResource(String filepath) 注意其中filepath必须以“/”开始。    ServletActionContext.getServletContext().getResourceAsStream("/WEB-INF/config/login.conf");就能够获得/WEB-INF/config/login.conf文件的输入流了。
相关文章
相关标签/搜索