栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 如何读取properties文件

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java 如何读取properties文件

1.情景展示

  将要访问的接口地址等常用的配置添加到properties文件中,比直接写到java类中的好处在于:

  当我们需要修改相应配置时,直接修改properties文件,重启tomcat即可,避免了重新编译引用该配置的java文件,同时,也便于项目的维护。

方式一

  通过spring的工具类PropertiesLoaderUtils来实现对properties文件的解析

  所需jar包:spring的核心jar包,spring-core-版本号.jar

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import org.springframework.core.io.support.PropertiesLoaderUtils;


public class PropertiesUtils {

  
  public static Map readProperties(String fileName) {
    Map resultMap = new HashMap();
    try {
      Properties props = PropertiesLoaderUtils.loadAllProperties(fileName);
      for (Object key : props.keySet()) {
 resultMap.put(key.toString(), props.get(key).toString());
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
    return resultMap;
  }

  
  public static void main(String[] args) {
//    Map map = readProperties("base/web/imageInfo/fileRootDirectories.properties");
    Map map = readProperties("fileRootDirectories.properties");
    for (Object key : map.keySet()) {
      System.out.println(key.toString() + "=" + map.get(key).toString());
    }
    // 打印结果
    // fileRootPath=uploadFiles
  }

}

  这种方式的缺点在于:

  每次调用都要重新解析对应的properties文件,所以,我们可以在项目启动的时候,就把该文件加载到内存中(一次加载解析,永久使用)。

方式二

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class PropertyUtils_old {
   private static Logger logger = LoggerFactory.getLogger(PropertyUtils_old.class);
   // 待解析的properties文件名称
   private static final String FILE_NAME = "bill.properties";
   // 用于接收解析过properties文件
   private static Properties props;
 
   // 静态代码块:在该类被加载到内容中时,该代码块会执行
   static {
       // 静态代码块执行时将要执行的方法
       loadPropertiesFile();
   }
 
   synchronized static private void loadPropertiesFile() {
       logger.debug("开始加载properties文件内容.......");
       props = new Properties();
       InputStream in = null;
       try {
           // 方式一:通过类加载器进行获取properties文件流(不用添加路径)
           in = PropertyUtils_old.class.getClassLoader().getResourceAsStream(FILE_NAME);
           // 方式二:通过类进行获取properties文件流(需要加/)
           // in = PropertyUtils.class.getResourceAsStream("/bill.properties");
           props.load(in);
       } catch (NullPointerException e) {
           logger.error("bill.properties文件未找到!");
       } catch (IOException e) {
           logger.error("出现IOException!");
       } finally {
           try {
               if (null != in) {
                   in.close();
               }
           } catch (IOException e) {
               logger.error("bill.properties文件流关闭出现异常");
           }
       }
       logger.info("加载properties文件内容完成...........");
       logger.info("properties文件内容:" + props);
   }
 
   
   public static String getProperty(String key) {
       if (null == props) {
           loadPropertiesFile();
       }
       return props.getProperty(key);
   }
 
   
   public static String getProperty(String key, String defaultValue) {
       if (null == props) {
           loadPropertiesFile();
       }
       return props.getProperty(key, defaultValue);
   }
}

  测试

public static void main(String[] args) {
    System.out.println(getProperty("bill.czInterfaceAddress"));
}

  方式一也可以按照方式二的形式,来达到一次加载,永久使用的效果。

以上就是java 如何读取properties文件的详细内容,更多关于java 读取properties文件的资料请关注考高分网其它相关文章!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/130645.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号