【properties文件第一行获取的值为null】一、 配置文件temp.properties如下:
dataTransName=data_exchange
updatePerson=张三
二、现象描述:
后台读取上传的update_config.properties文件内容,根据第一行对应的key(dataTransName)获取值时始终获取到的值为null。
三、报错原因分析:
明明是有这个dataTransName的key, 却仍报错。察看Properties类后找到了问题的原因:编码格式。
properties文件是基于行来读取和存储键值对的, 而期望的输入输出流字符编码是ISO 8859-1。 那些不能使用该方式存储的字符集呢,需要使用native2ascii命令对property文件进行转码。
由于我的这个配置文件中有中文, 所以我使用了UTF-8的编码方式存储, 使用UTF-8存储的坏处就是会多出一些特殊字符(乱码); 使用UE在16进制下查看发现, dataTransName变成了"锘縟ataTransName",当程序中再次查找dataTransName时, 就会报错, 找不到key(dataTransName)。
![properties文件第一行获取的值为null](https://img.it610.com/image/info8/3206332d9cea4a0d9e405af915fd6f1e.jpg)
文章图片
四、解决方案:
方案一:仍然使用UTF-8编码方式,将第一行给空出来;
![properties文件第一行获取的值为null](https://img.it610.com/image/info8/2edc376cefda4ad78d3ab26b4f128e9a.jpg)
文章图片
方案二:仍然使用UTF-8编码方式,将第一行写成注释;
![properties文件第一行获取的值为null](https://img.it610.com/image/info8/e367b103d5664141a4dd6c897f584e76.jpg)
文章图片
方案三:使用UTF-8无BOM编码方式(推荐使用);
![properties文件第一行获取的值为null](https://img.it610.com/image/info8/2e3a6042d5584087b3332c5c0c7a9850.jpg)
文章图片
方案四:使用ISO 8859-1的编码方式,中文用/u开头的unicode方式保存。
![properties文件第一行获取的值为null](https://img.it610.com/image/info8/2fb84b4791ae4d71acc77bd92e4ba226.jpg)
文章图片
参考文章:https://blog.csdn.net/pansanday/article/details/49895399
推荐阅读
- Java|Java基础——数组
- 人工智能|干货!人体姿态估计与运动预测
- java简介|Java是什么(Java能用来干什么?)
- Java|规范的打印日志
- Linux|109 个实用 shell 脚本
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- Spring注解驱动第十讲--@Autowired使用
- SqlServer|sql server的UPDLOCK、HOLDLOCK试验
- jvm|【JVM】JVM08(java内存模型解析[JMM])
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)