首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

[转]JAVA应用相对路径读取配置文件

2012-12-18 
[转]JAVA使用相对路径读取配置文件在软件开发中经常遇到读取配置文件,以及文件定位问题。今天做个总结。(一)

[转]JAVA使用相对路径读取配置文件
在软件开发中经常遇到读取配置文件,以及文件定位问题。今天做个总结。
   (一)在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 estlogin.conf",从而找到login.conf文件。
     通常我们使用  “类名”.class.getClassLoader().getResource("login.conf").openStream()来加载classes目录下的配置文件。得到文件的输入流。



     “类名”.class.getClassLoader().getResource("")定位到的绝对路径是WEB-INFclasses目录下。getResource(String filepath)。参数filepath是classes目录下的相对路径。
    (二)在java web project中的配置文件读取
          如果我们把配置文件定义在了classpath路径下。也就是WEB-INFclasses路径下,那么就可以像读取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文件的输入流了。

热点排行