我有一个properties
文件,其内容如下
test=uri=someURI,uname=username,pwd=
参数用逗号分隔,键和值用=
我正在使用ResourceBundle.getBundle("fileName")
来读取文件,并使用getString("test")
方法来读取test
的条目。
我在这里要做的是使用以下方法在 Map 中获取由=
分隔的字符串。
public static Map<String, String> configMap(String entry) {
return Arrays.stream(rb.getString(entry).split(",")).map(e -> e.split("="))
.collect(Collectors
.toMap(keyValue -> keyValue[0].trim(), keyValue -> keyValue[1].trim(), (a, b) -> b));
}
不过,这些方法的工作方式很奇怪。在属性文件中,如果我分配一个空格作为pwd
的值,它可以正常工作,但是如果我不给pwd
分配任何内容,甚至没有空格,它会给我以下错误
java.lang.ArrayIndexOutOfBoundsException: 1
地图也需要接受空值,我该如何实现?
您可以检查keyValue
数组的长度,如果它没有第二个元素 - 在Map
中放置一个空String
。
不幸的是,使用Collectors.toMap()
时,您无法在Map
中输入null
值。
return Arrays.stream(rb.getString(entry).split(",")).map(e -> e.split("="))
.collect(Collectors
.toMap(keyValue -> keyValue[0].trim(),
keyValue -> keyValue.length > 1 ? keyValue[1].trim() : "",
(a, b) -> b));