代码库-读取属性文件中的值
2023-09-14 08:58:22 时间
要求:实现读取属性文件 config.properties 中属性功能,提供参数key, 得到对应的值。
测试代码:
public static void main(String[] args) { System.out.println(PropertiesUtil.getStringByKey("user")); }
实现代码:
1 import java.io.File; 2 import java.io.FileInputStream; 3 import java.util.HashMap; 4 import java.util.Map; 5 import java.util.Properties; 6 7 /** 8 * 单例模式 9 */ 10 final class ResourceLoader { 11 12 private static ResourceLoader loader = new ResourceLoader(); 13 private static Map<String, Properties> loaderMap = new HashMap<>(); 14 15 private ResourceLoader() { 16 } 17 18 static ResourceLoader getInstance() { 19 return loader; 20 } 21 22 Properties getPropFromProperties(String fileName) throws Exception { 23 24 Properties prop = loaderMap.get(fileName); 25 if (prop != null) { 26 return prop; 27 } 28 prop = new Properties(); 29 30 /* 31 当程序启动时,如果添加了系统变量 configurePath 的配置,那么就会在这个路径下寻找属性文件, 32 否则就会在当前的classpath 路径下寻找属性文件 33 */ 34 String configPath = System.getProperty("configurePath"); 35 36 if (configPath == null) { 37 prop.load(this.getClass().getClassLoader().getResourceAsStream(fileName)); 38 } else { 39 String filePath = configPath + File.separator + fileName; 40 prop.load(new FileInputStream(new File(filePath))); 41 } 42 43 loaderMap.put(fileName, prop); 44 return prop; 45 } 46 47 }
import java.util.Properties; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; /** * 读取properties文件 */ public class PropertiesUtil { private static ResourceLoader loader = ResourceLoader.getInstance(); private static ConcurrentMap<String, String> configMap = new ConcurrentHashMap<String, String>(); private static final String DEFAULT_CONFIG_FILE = "config.properties"; /** * 从属性文件propName 中读取属性key */ public static String getStringByKey(String key, String propName) { Properties prop; try { prop = loader.getPropFromProperties(propName); } catch (Exception e) { throw new RuntimeException("属性文件加载失败", e); } key = key.trim(); if (!configMap.containsKey(key)) { if (prop.getProperty(key) != null) { configMap.put(key, prop.getProperty(key)); } } return configMap.get(key); } /** * 从默认属性文件 中读取属性key */ public static String getStringByKey(String key) { return getStringByKey(key, DEFAULT_CONFIG_FILE); } /** * 从属性文件propName 中读取所有属性 */ public static Properties getProperties() { try { return loader.getPropFromProperties(DEFAULT_CONFIG_FILE); } catch (Exception e) { return null; } } }
原创文章,欢迎转载,转载请注明出处!
相关文章
- 代码审计-phpcms9任意文件读取
- Spring获取properties文件中的属性
- MFC将二进制文件导入资源后释放
- struts.xml文件中package元素的各大属性讲解
- Windows Store App JavaScript 开发:获取文件和文件夹列表
- Linux 保护文件 不给修改
- Flutter 读写本地文件
- vs2015对revit2018二次开发之不启动Revit,读取rvt文件里墙及其属性
- 利用socket模拟http的混合表单上传(在一个请求中提交表单并上传多个文件)
- AI:人工智能中常用的xml、hdf5、dat等不同模型文件后缀文件的简介、使用方法之详细攻略
- Springboot-@Value属性注入properties或yml文件
- 以Java属性文件的格式创建Hibernate的配置文件和DTD特殊符号作用
- spring boot --- 使用 注解 读取 properties 文件 信息
- Linux文件时间属性
- AssemblyInfo.cs文件的作用
- JBoss 系列十四:JBoss7/WildFly如何加载外部的文件或properties文件
- Linux基础命令-ls显示目录和文件的属性信息
- docker与宿主机host 文件挂载 宿主机和容器互通文件 互传文件 文件互传 共享文件共享
- FPGA-测试文件的编写
- 按格式化方式读取文件------fscanf函数
- 单片机开发,malloc申请内存成功后,使用部分后,剩余部分于read读文件,读取的内容存在问题
- 网站大文件下载 ASP.NET