基于Properties文件中的空格問題
Properties文件中的空格問題
默認(rèn)情況下
空格可以作為Properties文件中Key和Value的分隔符,當(dāng)我們需要在Key中使用空格的時(shí)候,可以使用反斜杠(\)對(duì)空格進(jìn)行轉(zhuǎn)移。
注: 斜杠為(/),反斜杠為(\)。
讀properties文件時(shí),值中有空格,可能會(huì)引起bug
一般properties文件都是配置文件,但是我們?cè)谧x取配置信息的時(shí)候,可能會(huì)有一些莫名其妙的錯(cuò)誤。就比如:
我讀的配置很多事數(shù)字,不是long就是int,不全是字符串,那么問題來了。在把字符串轉(zhuǎn)換成int或者long的時(shí)候,就bug啦
Long keepAlive = null; try { keepAlive = Long.parseLong(properties.getProperty(prefix + channelName + "." + Channel.KEEP_ALIVE_KEY)); } catch (Exception e) { System.out.println(e.getMessage()); }
首先,你得機(jī)智的知道,這個(gè)方法 Long.parseLong(string) ,可以把字符串轉(zhuǎn)成long型,但是這個(gè)可能會(huì)拋異常,對(duì),就算知道他可能拋異常,比如,傳的字符串的值是null,或者轉(zhuǎn)不成數(shù)字,那就異常啦。還是會(huì)出現(xiàn)一些問題。
但是在讀取配置的時(shí)候,發(fā)現(xiàn)如下debug圖
看到我讀取的值9,后面還帶了個(gè)空格,那么這樣子,肯定轉(zhuǎn)換成數(shù)據(jù)類型的時(shí)候就要拋異???/p>
先看下我讀取的配置文件具體是什么樣的
可以看到我的key也是有很多的空格的,前后都有。
然后再看看讀出來到debug是什么樣的
大致,總結(jié)一下,就是key的空格,他是不管的,但是對(duì)于value的空格,他就只留后面的一個(gè)空格。好像是這么滴吧
所以,在讀取到配置信息鍵值對(duì),有必要對(duì)所有的鍵值對(duì),統(tǒng)一處理一下。
/** * 讀取properties文件的值中會(huì)可能會(huì)有空格,需要處理一下。 */ private static void trimSpace(Properties prop) { for (Map.Entry<Object, Object> entry : prop.entrySet()) { entry.setValue(entry.getValue().toString().trim()); } }
這么處理一下就可以啦,因?yàn)槭堑刂穫鬟f的,你只要把你讀的prop當(dāng)參數(shù),走這方法一遭,就把空格處理啦。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
帶你了解Java數(shù)據(jù)結(jié)構(gòu)和算法之二叉樹
這篇文章主要為大家介紹了Java數(shù)據(jù)結(jié)構(gòu)和算法之二叉樹,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-01-01Springboot中使用Redis實(shí)現(xiàn)分布式鎖的示例代碼
在分布式系統(tǒng)中,為了保證數(shù)據(jù)的一致性和任務(wù)的互斥執(zhí)行,分布式鎖是一種常見的解決方案,本文主要介紹了Springboot中使用Redis實(shí)現(xiàn)分布式鎖的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05java應(yīng)用開發(fā)之JVM運(yùn)行時(shí)內(nèi)存分析
這篇文章主要介紹了java應(yīng)用開發(fā)之JVM運(yùn)行時(shí)內(nèi)存,文中附含圖文示例內(nèi)容分析非常簡(jiǎn)要,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09ArrayList及HashMap的擴(kuò)容規(guī)則講解
今天小編就為大家分享一篇關(guān)于ArrayList及HashMap的擴(kuò)容規(guī)則講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02Java8?LocalDateTime時(shí)間日期類使用實(shí)例詳解
本文從 LocalDateTime 類的創(chuàng)建、轉(zhuǎn)換、格式化與解析、計(jì)算與比較以及其他操作幾個(gè)方面詳細(xì)介紹了 LocalDateTime 類在 Java 8 中的使用,感興趣的朋友跟隨小編一起看看吧2024-03-03Java While循環(huán) do-while循環(huán)用法
循環(huán)語句就是讓計(jì)算機(jī)根據(jù)條件做循環(huán)計(jì)算,在條件滿足時(shí)繼續(xù)循環(huán),條件不滿足時(shí)退出循環(huán),需要的朋友可以參考下2020-11-11java編程實(shí)現(xiàn)獲取服務(wù)器IP地址及MAC地址的方法
這篇文章主要介紹了java編程實(shí)現(xiàn)獲取機(jī)器IP地址及MAC地址的方法,實(shí)例分析了Java分別針對(duì)單網(wǎng)卡及多網(wǎng)卡的情況下獲取服務(wù)器IP地址與MAC地址的相關(guān)技巧,需要的朋友可以參考下2015-11-11