Java读取properties可以使用jdk原生类库中java.util.properties,但是如果配置文件中会有key重复的情况,后面的键值对会覆盖前面的,那么应该怎么读取呢?读文件按行拆分?有没有第三方库实现?读取之后怎么用IdentityHashMap存储呢?IdentityHashMap使用应该注意哪些事项?其remove方法删除指定key时应该如何删除?下面将对此逐一展开描述!
文章目录
- 原生类库`Java读取properties可以使用jdk原生类库中java.util.properties`读取配置
- 配置文件中有key重复时,`java.util.properties`的读取
- 使用文件拆分?
- 第三方库读取
- 将读得出来数据转为IdentityHashMap,便于处理
- 将IdentityHashMap数据创建k8s Configmaps资源对象
- 将IdentityHashMap数据转换为Json格式
- 将IdentityHashMap数据转换为Json格式再转换回来
- 将IdentityHashMap中的某个键值对移除,移除不掉?
- 将IdentityHashMap中的某个键值对移除的正确方法!
原生类库Java读取properties可以使用jdk原生类库中java.util.properties
读取配置
配置文件中有key重复时,java.util.properties
的读取
有这样一个需求,将classpath下的redis配置文件redis.conf中的配置读入,redis.conf中会存在以下内容:
#RDB保存条件
save 900 1
save 300 10
save 60 10000
这样,用java.util.properties
的读取后,就只包含一个键值对,键为save
,值为60 10000
,即前面的被覆盖。
使用文件拆分?
省略
第三方库读取
使用org.apacche.commons.configuration.PropertiesConfiguration
maven依赖:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-configuration2</artifactId>
<version>2.6.1-SNAPSHOT</version>
</dependency>
读取方法如下:redis.conf文件位于classpath下的config目录中。
将读得出来数据转为IdentityHashMap,便于处理
见上图遍历时,将其放入IdentityHashMap中,需要注意的是,key需要new String(key),这样生成不同的地址,否则在IdentityHashMap中仍然会被覆盖。
将IdentityHashMap数据创建k8s Configmaps资源对象
将IdentityHashMap数据转换为Json格式
将IdentityHashMap数据转换为Json格式再转换回来
将IdentityHashMap中的某个键值对移除,移除不掉?
将IdentityHashMap中的某个键值对移除的正确方法!
必须对数据进行遍历,获取到key的地址,才能将其remove,直接remove字符串是移除不掉的。