基于Properties文件中的空格问题
Properties文件中的空格问题
默认情况下
空格可以作为Properties文件中Key和Value的分隔符,当我们需要在Key中使用空格的时候,可以使用反斜杠(\)对空格进行转移。
注: 斜杠为(/),反斜杠为(\)。
读properties文件时,值中有空格,可能会引起bug
一般properties文件都是配置文件,但是我们在读取配置信息的时候,可能会有一些莫名其妙的错误。就比如:
我读的配置很多事数字,不是long就是int,不全是字符串,那么问题来了。在把字符串转换成int或者long的时候,就bug啦
Long keepAlive = null; try { keepAlive = Long.parseLong(properties.getProperty(prefix + channelName + "." + Channel.KEEP_ALIVE_KEY)); } catch (Exception e) { System.out.println(e.getMessage()); }
首先,你得机智的知道,这个方法 Long.parseLong(string) ,可以把字符串转成long型,但是这个可能会抛异常,对,就算知道他可能抛异常,比如,传的字符串的值是null,或者转不成数字,那就异常啦。还是会出现一些问题。
但是在读取配置的时候,发现如下debug图
看到我读取的值9,后面还带了个空格,那么这样子,肯定转换成数据类型的时候就要抛异常咯。
先看下我读取的配置文件具体是什么样的
可以看到我的key也是有很多的空格的,前后都有。
然后再看看读出来到debug是什么样的
大致,总结一下,就是key的空格,他是不管的,但是对于value的空格,他就只留后面的一个空格。好像是这么滴吧
所以,在读取到配置信息键值对,有必要对所有的键值对,统一处理一下。
/** * 读取properties文件的值中会可能会有空格,需要处理一下。 */ private static void trimSpace(Properties prop) { for (Map.Entry<Object, Object> entry : prop.entrySet()) { entry.setValue(entry.getValue().toString().trim()); } }
这么处理一下就可以啦,因为是地址传递的,你只要把你读的prop当参数,走这方法一遭,就把空格处理啦。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Java中的ReentrantLock、ReentrantReadWriteLock、StampedLock详解
这篇文章主要介绍了Java中的ReentrantLock、ReentrantReadWriteLock、StampedLock详解,读写锁:一个资源能够被多个读线程访问,或者被一个写线程访问但是不能同时存在读写线程,需要的朋友可以参考下2024-01-01Java数据结构及算法实例:朴素字符匹配 Brute Force
这篇文章主要介绍了Java数据结构及算法实例:朴素字符匹配 Brute Force,本文直接给出实例代码,代码中包含详细注释,需要的朋友可以参考下2015-06-06springboot基于keytool实现https的双向认证示例教程
这篇文章主要介绍了springboot基于keytool实现https的双向认证,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-06-06RestTemplate如何通过HTTP Basic Auth认证示例说明
这篇文章主要为大家介绍了RestTemplate如何通过HTTP Basic Auth认证的示例说明,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-03-03
最新评论