• java web中读取properties文件时的路径问题


    在web开发时,难免会有一些固定的参数,我们一般把这些固定的参数存在properties文件中,然后用的时候要读出来。但经常出现一些错误,找不到相应的路径,所以,今天特地讲一些如何正确获得路径。

    首先,我们要将properties文件部署在$app/WEB-INF/classes文件夹里,比如将info.properties文件放在dingding这个web应用下时,该文件所在的路径为$dingding/WEB-INF/classes/info.properties。

    然后读取的时候分为两种情况读取:

    (一)在Servlet类中的读取

    有两种读取方式:

    1.直接将properties文件读入的流中

    [java] view plain copy
     
    1. InputStream in = request.getServletContext().getResourceAsStream("/WEB-INF/classes/info.properties");  
    2. Properties prop = new Properties();  
    3. prop.load(in);  
    4. prop.getProperty("username");  

    2.获得properties文件的路径,然后在用流读出

    [java] view plain copy
     
    1. String path = request.getServletContext().getRealPath("/WEB-INF/classes/info.properties");  
    2. FileInputStream in = new FileInputStream(path);  
    3. Properties prop = new Properties();  
    4. prop.load(in);  
    5. prop.getProperty("username");  

    推荐第二种方法,易于理解。

    (二)在非Servlet类中(普通java类中)的读取

    也有两种读取方式:

    1.直接将文件装载到内存中

    [java] view plain copy
     
    1. InputStream in = Demo.class.getClassLoader().getResourceAsStream("db.properties");  
    2. Properties prop = new Properties();  
    3. prop.load(in);  
    4. prop.getProperty("username");  

    但存在一些缺陷:类装载器加载内容时,会先查找内存中是否已经存在相应的内容,如果有就不再加载直接使用内存中的,所以此方法,第一次加载后,如果文件内容有变动,第二次加载后还是原来的内容,无法加载修改后的内容。下边的方法取文件的绝对路径来加载不会有这种问题。

    2.读取到文件的路径,然后用流读出

    [java] view plain copy
     
    1. String path = Demo.class.getClassLoader().getResource("info.properties").getPath();  
    2. FileInputStream in = new FileInputStream(path);  
    3. Properties prop = new Properties();  
    4. prop.load(in);  
    5. prop.getProperty("username");  

    上面在使用FileInputStream时传入的都是绝对路径,也可以使用相对路径:
    普通java工程:是相对于当前类的所在路径
    web工程:是相对于$tomcat/bin       ($tomcat为tomcat的路径名)

    来源:http://blog.csdn.net/jeryjeryjery/article/details/53257921

  • 相关阅读:
    ios web 媒体查询兼容
    Linux python 虚拟环境管理
    three.js 纹理动画实现
    three.js 在模型上移动相机
    three.js 模型拖动之DragControls控制器
    three.js 添加html内容、文本
    微信公众号对接记录
    事务的日志
    事务的隔离级别
    事务中的锁
  • 原文地址:https://www.cnblogs.com/kongxc/p/8527452.html
Copyright © 2020-2023  润新知