zoukankan      html  css  js  c++  java
  • 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 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文件的输入流了。
  • 相关阅读:
    加密
    读取excel
    poj 1852 Ants
    关于运行时间
    poj 1001 Exponentiation
    Poj 3669 Meteor Shower
    一道简单题目的优化过程——抽签问题
    高精度四则运算
    Usaco_Contest_2013_Open_Bovine Problem 1. Bovine Ballet
    h5 音频 视频全屏设置
  • 原文地址:https://www.cnblogs.com/apache-x/p/5337459.html
Copyright © 2011-2022 走看看