基于Properties文件中的空格问题

 更新时间:2021年08月28日 09:26:36   作者:rightrat  
这篇文章主要介绍了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当参数,走这方法一遭,就把空格处理啦。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring控制Bean加载顺序的操作方法

    Spring控制Bean加载顺序的操作方法

    正常情况下,Spring 容器加载 Bean 的顺序是不确定的,那么我们如果需要按顺序加载 Bean 时应如何操作?本文将详细讲述我们如何才能控制 Bean 的加载顺序,需要的朋友可以参考下
    2024-05-05
  • Java 中执行动态表达式语句前中后缀Ognl、SpEL、Groovy、Jexl3

    Java 中执行动态表达式语句前中后缀Ognl、SpEL、Groovy、Jexl3

    这篇文章主要介绍了Java 中执行动态表达式语时的句前中后缀Ognl、SpEL、Groovy、Jexl3的相关资料,需要的朋友可以参考下面文章的详细介绍
    2021-09-09
  • Spring整合Quartz开发代码实例

    Spring整合Quartz开发代码实例

    这篇文章主要介绍了Spring整合Quartz开发代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Mybatis返回结果封装map过程解析

    Mybatis返回结果封装map过程解析

    这篇文章主要介绍了Mybatis返回结果封装map过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • SpringBoot整合RabbitMQ实现六种工作模式的示例

    SpringBoot整合RabbitMQ实现六种工作模式的示例

    这篇文章主要介绍了SpringBoot整合RabbitMQ实现六种工作模式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • java中orElse和orElseGet方法区别小结

    java中orElse和orElseGet方法区别小结

    这篇文章主要给大家介绍了关于java中orElse和orElseGet方法区别的相关资料,两者之间的区别细微,但是却在某些场景下显的很重要,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • rabbitmq basicReject/basicNack/basicRecover的区别及说明

    rabbitmq basicReject/basicNack/basicRecover的区别及说明

    这篇文章主要介绍了rabbitmq basicReject/basicNack/basicRecover的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • 8个简单部分开启Java语言学习之路 附java学习书单

    8个简单部分开启Java语言学习之路 附java学习书单

    8个简单部分开启Java语言学习之路,附java学习书单,这篇文章主要向大家介绍了学习java语言的方向,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • Java项目中如何引入Hutool工具类并正确使用它

    Java项目中如何引入Hutool工具类并正确使用它

    Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,这篇文章主要给大家介绍了关于Java项目中如何引入Hutool工具类并正确使用它的相关资料,需要的朋友可以参考下
    2024-01-01
  • 详解J2EE开发的网站部署到阿里云服务器的方法

    详解J2EE开发的网站部署到阿里云服务器的方法

    这篇文章主要介绍了详解J2EE开发的网站部署到阿里云服务器的方法,需要的朋友可以参考下
    2018-01-01

最新评论